Задать вопрос

Qt. Работа с Хабрахабр API?

Задача

Для развлечения я решил написать под мобилки программу на Qt. Программа позволяет просмотреть карму, рейтинг, позицию в рейтинге пользователя. Это будет мой первый проект, который должен работать с вебом.

Проблема

Я не знаю каким образом происходит реализация соединения и скачивания файла. Сначала пытался писать так:

QFile xml_input("http://habrahabr.ru/api/profile/user");
bool flag = xml_input.open(QFile::ReadOnly);


flag — возвращает ноль. Я нашел пару статей в которых описывается метод с использованием QNetworkAccessManager. Но там я ничего не понял. Если можно объясните. Есть ли метод по-проще?

Желание

Надо что бы на выходе я получил чистый QFile с XML начинкой. Но строка тоже годится…
  • Вопрос задан
  • 5671 просмотр
Подписаться 4 Оценить Комментировать
Решения вопроса 1
TheHorse
@TheHorse
QNetworkAccessManager — это очень хорошо, но в QHTTP все будет намного проще, считать в строку — просто, записать в файл — еще проще.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Paul
@Paul
Если вы собираетесь писать на Qt вам категорически необходимо понять, что такое сигналы и слоты. Если вы разобрались, как пользоваться сигналами и слотами, то задавайте конкретные вопросы по QNetworkAccessManager. Если нет — разбирайтесь, без них вы далеко на Qt не уедете.
Ответ написан
Комментировать
kharvd
@kharvd
Самый простой вариант — запрос через QNetworkAccessManager. В документации о нем много информации и примеров doc.qt.nokia.com/latest/qnetworkaccessmanager.html


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

manager->get(QNetworkRequest(QUrl("http://habrahabr.ru/api/profile/tucnak")));


Суть в том, что нужно сделать GET-запрос на страницу API. Результат будет возвращен в виде указателя на QNetworkReply в параметре слота и может быть извлечен в строку методом QNetworkReply::readAll().
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы