Название: XML http запросы - чем наколдовать? Отправлено: sindbad07 от Апрель 25, 2011, 22:59 Здравствуйте форумчане! Подскажите плиз кто знает - чем воспользоваться в Qt, чтобы отправлять/принимать XML-Http заросы? Мне надобно поработать с Ebay API, там работа идет через XML-запросы.
п.с. Сам искал, пока по нулям, может есть пример какой-нибудь, али плагин с описанием, очень буду рад, если поможете сэкономить мне кучу времени на поиск хоть какого-нибудь мануала :) Название: Re: XML http запросы - чем наколдовать? Отправлено: Denjs от Апрель 25, 2011, 23:22 http://www.prog.org.ru/topic_15336_0.html
не? поможет? скажите, а что по вашему из себя _технически_ преставляют "XML-Http запросы"? Название: Re: XML http запросы - чем наколдовать? Отправлено: sindbad07 от Апрель 26, 2011, 13:14 Denjs, спасибо, правда нифика не понял, что делается в примере.
Нашел только пример запроса на Visual Basic, мне надо типа такой функции написать: Private Function SendHTTPRequest(xmldoc As DOMDocument, ByVal devID As String, ByVal appID As String, _ ByVal certID As String, ByVal version As String, ByVal callname As String, _ ByVal siteID As String, ByVal serverUrl As String) As DOMDocument 'Send the request and get the resonse document 'Create a new HTTP Request object Dim request As MSXML.XMLHTTPRequest Set request = New MSXML.XMLHTTPRequest 'add the required headers With request .open "POST", serverUrl, False .setRequestHeader "Content-Type", "text/xml" .setRequestHeader "X-EBAY-API-COMPATIBILITY-LEVEL", version .setRequestHeader "X-EBAY-API-DEV-NAME", devID .setRequestHeader "X-EBAY-API-APP-NAME", appID .setRequestHeader "X-EBAY-API-CERT-NAME", certID .setRequestHeader "X-EBAY-API-CALL-NAME", callname .setRequestHeader "X-EBAY-API-SITEID", siteID .send xmldoc End With If request.Status = 200 Then 'Successful 'set response as an XML Document Dim response As MSXML.DOMDocument Set response = request.responseXML Set SendHTTPRequest = response End If End Function Тут используется объект MSXML.XMLHTTPRequest, чем можно заменить его в Qt, чтобы в качестве http-запроса отправлять и принимать xml-данные? Название: Re: XML http запросы - чем наколдовать? Отправлено: majatu от Апрель 26, 2011, 17:03 проблема решается qtcpsocket или QNetworkAccessManager + QNetworkRequest, шлешь в хеадере что тебе надо, принимаешь соотв также
искать тут нечего, т.к. все зависит от конкретной задачи. Глянь в примерах, как с ним работать http://doc.qt.nokia.com/latest/qnetworkaccessmanager.html Название: Re: XML http запросы - чем наколдовать? Отправлено: sindbad07 от Апрель 26, 2011, 20:29 Хорошо, допустим вот эта часть:
.open "POST", serverUrl, False .setRequestHeader "Content-Type", "text/xml" .setRequestHeader "X-EBAY-API-COMPATIBILITY-LEVEL", version .setRequestHeader "X-EBAY-API-DEV-NAME", devID .setRequestHeader "X-EBAY-API-APP-NAME", appID .setRequestHeader "X-EBAY-API-CERT-NAME", certID .setRequestHeader "X-EBAY-API-CALL-NAME", callname .setRequestHeader "X-EBAY-API-SITEID", siteID будет выглядеть примерно так: request.setUrl(QUrl("http://qt.nokia.com")); request.setRawHeader("User-Agent", "MyOwnBrowser 1.0"); А как быть с этим: .send xmldoc Типа должен отправиться xml-объект! Название: Re: XML http запросы - чем наколдовать? Отправлено: sindbad07 от Апрель 26, 2011, 21:40 п.с. Нашел также пример на php, там используется функция setBody(), как же то-же самое задать в Qt? // Get entity of http client $httpClient = new Http_Client('http://svcs.sandbox.ebay.com/services/search/FindingService/' . FINDING_API_VERSION); // Prepare headers $httpClient->setHeaders( array( 'X-EBAY-SOA-OPERATION-NAME: findItemsByKeywords', 'X-EBAY-SOA-SECURITY-APPNAME: ' . APP_ID ) ); // Prepare body $httpClient->setBody( '<?xml version="1.0" encoding="utf-8"?> <findItemsByKeywordsRequest xmlns="http://www.ebay.com/marketplace/search/v1/services"> <keywords>' . htmlspecialchars($keywords) . '</keywords> <paginationInput> <entriesPerPage>10</entriesPerPage> </paginationInput> </findItemsByKeywordsRequest>' ); // Send request $result = $httpClient->send(); Название: Re: XML http запросы - чем наколдовать? Отправлено: Denjs от Апрель 27, 2011, 00:23 $httpClient->setBody( '<?xml version="1.0" encoding="utf-8"?> <findItemsByKeywordsRequest xmlns="http://www.ebay.com/marketplace/search/v1/services"> <keywords>' . htmlspecialchars($keywords) . '</keywords> <paginationInput> <entriesPerPage>10</entriesPerPage> </paginationInput> </findItemsByKeywordsRequest>' ); Код: QNetworkReply * QNetworkAccessManager::sendCustomRequest ( const QNetworkRequest & request, const QByteArray & verb, QIODevice * data = 0 ) где const QByteArray & verb - это видимо "body" и есть? Название: Re: XML http запросы - чем наколдовать? Отправлено: majatu от Апрель 27, 2011, 15:46 еж мое, почитай мануал QNetworkAccessManager + post
а также желательно все, что связано с сетью выводить в отдельный поток Код: QUrl url("http://test.ru/...куда шлем"); принимаем Код: void .....::slotReadyRead() Название: Re: XML http запросы - чем наколдовать? Отправлено: Denjs от Апрель 27, 2011, 16:20 еж мое, почитай мануал QNetworkAccessManager + post я полагаю автор ещё и искал класс кооторый позволил бы ему не формировать руками XML-ку, а работать с ней методами класса...а также желательно все, что связано с сетью выводить в отдельный поток ну в общем как с SOAP-пакетами - их тоже можно руками формировать, о как-то уж очень неблагодарное это дело... хотя XMLHttp должен быть попроще, но все-ж)))) Название: Re: XML http запросы - чем наколдовать? Отправлено: sindbad07 от Апрель 28, 2011, 17:39 majatu, спасибо большое за такой развернутый ответ, седня буду пробовать :)
|