Russian Qt Forum
Ноябрь 24, 2024, 04:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt + API к поисковикам  (Прочитано 2515 раз)
sobr_vamp
Гость
« : Июнь 16, 2011, 16:58 »

Всем привет.
Делаю приложение, связанное с поиском.
Задача:
Нужно обращаться к поисковику (неважно google, yandex или другое что-то) при помощи POST метода, получать от него ответы (10-20 первых) в xml (или другом формате), парсить их и использовать дальше. Также отлично было бы, если была возможность загружать html-документы (или их фрагменты), в которых были найдены ответы.

Проблема:
1. Знаю, что нужно использовать QNetworkManager, QNetworkRequest и так далее. Пытался переделать http://habrahabr.ru/blogs/net/116479/ эту статью, где для .NET написано, получилось это:

Код:
    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());
Вроде всё нормально, но результатов не возвращает. И как ошибку найти непонятно.

2. Также не могу найти готовые решения или хотя бы примеры реального использования.
Есть примеры POST-запросов. А чтобы именно по API к поисковику - нет.

Если кто чем может помочь, буду премного благодарен.
Может кто реализовывал что подобное и поделится или укажет на существующие обёртки.
Спасибо.
Записан
sobr_vamp
Гость
« Ответ #1 : Июнь 16, 2011, 20:56 »

Помогли на stackoverflow
Нужно было дописать примерно следующее:

Код:
connect(manager, SIGNAL(finished(QNetworkReply*)),
     this, SLOT(replyFinished(QNetworkReply*)));

MyClass::replyFinished(QNetworkReply* reply)
{
 QString answer = QString::fromUtf8(reply->readAll());     
}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.106 секунд. Запросов: 21.