Russian Qt Forum

Qt => Работа с сетью => Тема начата: Zusykss от Март 05, 2017, 14:35



Название: Проблема с ответом от сервера
Отправлено: Zusykss от Март 05, 2017, 14:35
Посылаю запрос
Код:
req.setUrl(FIR_REQ_ADD);
    req.setRawHeader("Host", "baza.drom.ru");
    req.setRawHeader("Connection", "keep-alive");
    req.setRawHeader("Upgrade-Insecure-Requests", "1");
    req.setRawHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36");
    req.setRawHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
В первом варианте, все ок приходит ответ(только в нем куча ���������� ���������� �� таких символов) и нет
\u0434\u043d\u0443 \u0448\u0442\u0443\u043a\u0443 \u0411\u0423 185\/55\/16 - вот такого

Второй вариант
Код:
req.setUrl(FIR_REQ_ADD);
    req.setRawHeader("Host", "baza.drom.ru");
    req.setRawHeader("Connection", "keep-alive");
    req.setRawHeader("Upgrade-Insecure-Requests", "1");
    req.setRawHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36");
    req.setRawHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
    req.setRawHeader("Referer", "http://baza.drom.ru/adding");
    req.setRawHeader("Accept-Encoding", "gzip, deflate, sdch");
    req.setRawHeader("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4");
Приходит просто одна строчка = �

В чем причина, не могу понять. Пример сырого запроса беру из снифера, в снифере все работает хорошо, а программно выдает такую штуку

Код:
QString strBuf = QString::fromUtf8(m_reply->readAll());


Название: Re: Проблема с ответом от сервера
Отправлено: kambala от Март 05, 2017, 18:06
а ты байты смотрел какие приходят в ответ? может там кодировка не UTF-8.


Название: Re: Проблема с ответом от сервера
Отправлено: Zusykss от Март 05, 2017, 18:43
Смотрел.  Ошибка была в gzip, наверно нет такого функционала в QNetworkAccessManager...
Удалил эту строчку, ответ увеличился в 4 раза, зато получаю то что нужно....
req.setRawHeader("Accept-Encoding", "gzip, deflate, sdch");
оставил req.setRawHeader("Host", "baza.drom.ru");


Проблема решена!


Название: Re: Проблема с ответом от сервера
Отправлено: RusTech1 от Март 21, 2017, 16:48
Можете не отказываться от сжатия, тогда нужно проверять заголовок ответа на "Content-Encoding: gzip", и разжимать, например как тут: http://stackoverflow.com/questions/2690328/qt-quncompress-gzip-data


Название: Re: Проблема с ответом от сервера
Отправлено: Zusykss от Апрель 01, 2017, 23:23
Благодарю за ответ. Я разобрался всем большое спасибо.