API поисковой системы Qt + - PullRequest
1 голос
/ 16 июня 2011

Мне нужен поиск в Google (или другом движке) в моей программе desktop .Не могли бы вы дать мне пример того, как отправить запрос POST в API и получить ответ.Я использую Qt и C ++.

Например, этот код не работает (речь идет об API Яндекса):

QString* query = new QString("<?xml version=""1.0"" encoding=""UTF-8""?>"
                             "<request><query>" + ui->search_le->text().toUtf8() +
                             "</query><groupings><groupby attr=""d"""
                             "mode=""deep""groups-on-page=""10""docs-in-group=""1"" />"
                             "</groupings></request>");

QUrl apiurl = QUrl("http://xmlsearch.yandex.ru/xmlsearch?user=*******&"
                   "key=03.*******:**************f01e29f007af7994e951");

manager = new QNetworkAccessManager();
request = new QNetworkRequest(apiurl);
reply = manager->post(*request, query->toUtf8());

QString answer = QString::fromUtf8(reply->readAll());

И я действительно не знаю, как найти проблему.

Спасибо всем, кто сможет мне помочь.

1 Ответ

0 голосов
/ 16 июня 2011

Вы на правильном пути. Читайте о сигналах и слотах в Qt. http://doc.qt.io/archives/qt-4.7/signalsandslots.html

Вы должны подключить сигнал finished() QNetworkAccessManager к своему собственному слоту, а затем вызвать ответ-> readAll ();

Сделайте это до вызова метода post.

connect(manager, SIGNAL(finished(QNetworkReply*)),
     this, SLOT(replyFinished(QNetworkReply*)));

Затем реализуйте метод replyFinished в своем классе.

MyClass::replyFinished(QNetworkReply* reply)
{
 QString answer = QString::fromUtf8(reply->readAll());     
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...