Russian Qt Forum

Qt => Работа с сетью => Тема начата: Dimajp от Февраль 11, 2010, 19:22



Название: QNetworkAccessManager не могу получить данные от сервера.
Отправлено: Dimajp от Февраль 11, 2010, 19:22
Создаю обьект запроса и инициализирую его

QNetworkRequest request;
request.setUrl(QUrl("http://iphonett.staging.acceptic.com/api/groups?offset=0&limit=1"));

далее этот запрос даю менеджеру работы с сетью и соединяю ссигнал со слотом

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

отправляю запрос:

   manager->get(request);

Когда приходит сигнал с ответом то в слоте пытаюсь вынуть тело ответа(в моем случае это обьетк типа JSON), и хотябы вывести в текстовое поле(m_ptxtInfo) чтобы увидеть что я там получил.Ответ в обьекте reply.

m_ptxtInfo->append(reply->readAll().constData());



В результате получаю надпись

Moved Permanently
The document has moved here.


При этом когда смотрю хедеры то они выводятся без проблем!!!

Смотрю их вот так

   QList<QByteArray> result;
    result=reply->rawHeaderList();

    foreach (QByteArray byteArray, result) {
    m_ptxtInfo->append(byteArray.constData());
    m_ptxtInfo->append(reply->rawHeader(byteArray).constData());

получаю следующий текст


Date
Thu, 11 Feb 2010 16:17:44 GMT
Server
Apache/2.2.14 (FreeBSD) mod_ssl/2.2.14 OpenSSL/0.9.7e-p1 DAV/2 PHP/5.2.11 with Suhosin-Patch mod_python/3.3.1 Python/2.5.4 SVN/1.6.6
Location
http://iphonett.staging.acceptic.com/api/groups/?offset=0&limit=1
Content-Length
277
Keep-Alive
timeout=5, max=100
Connection
Keep-Alive
Content-Type
text/html; charset=iso-8859-1


Что я не так делаю чтобы вынуть данные из запроса? Когда сам запрос выполянить в браузере то он выдает нужный мне обьект!!!


Название: Re: QNetworkAccessManager не могу получить данные от сервера.
Отправлено: Dimajp от Февраль 11, 2010, 20:21
Все норм!!!

Нашел ошибку!!

Запрос был неправильно написан
Я писал http://iphonett.staging.acceptic.com/api/groups?offset=0&limit=1
И при это браузер всерано его распознавал!!!

а надо было http://iphonett.staging.acceptic.com/api/groups/?offset=0&limit=1

после groups должна были быть /.


Название: Re: QNetworkAccessManager не могу получить данные от сервера.
Отправлено: SABROG от Февраль 12, 2010, 23:30
Как-то это всё странно. Это такая заморочка сервера или QNetworkAccessManager'a? При использовании QNAM я подобного не замечал, а запросы с параметрами всегда лепил через QUrl::setQueryItems().