Russian Qt Forum

Программирование => Общий => Тема начата: Игорь от Ноябрь 22, 2017, 12:20



Название: QNetworkRequest vs AJAX возможно ли такое вообще? (РЕШЕНО)
Отправлено: Игорь от Ноябрь 22, 2017, 12:20
Добрый день. Стоит задача: передавать параметры и получить данные со стороннего сервиса (который никакого API не предоставляет). Чтоб далеко не ходить, вот конкретный пример https://egisz.medkirov.ru/e-reg2.nsf/searchByStreet.xsp, на страничке https://egisz.medkirov.ru/e-reg2.nsf/functions.js есть функция searchDistrict() в теле которой идет AJAX вызов
Код:
	$.ajax({ 
     url: "getRegion.xsp",
     type: "POST",
     data: ({ city:$('#city').val(), q: $('#street').val(), f: "getStreet", village: $('#village').val(), dom: $('#dom').val(), medgroup:$("#medgroup").val()}),
     dataType: "html",
     success: function(response){
  var items = response.split("\n");
Дак вот собственно вопрос: можно ли с помощью какого-то Qt-класса (например QNetworkRequest) сделать вызов getRegion.xsp с параметрами, и почитать результат?  
Спасибо.


Название: Re: QNetworkRequest vs AJAX возможно ли такое вообще?
Отправлено: Игорь от Ноябрь 28, 2017, 08:40
Чувак,
1. ты сформулировал свой вопрос не верно. Тебе нужен просто вызов функции getRegion.xsp с параметрами;
2. если у тебя возникают проблемы, или что-то не работает, и ты не знаешь что, запоминай следующую универсальную инструкцию:
 - Прежде всего нужна максимально полная отладочная информация, в твоем случае это https://www.telerik.com/fiddler , но я для тех же целей воспользовался
 https://www.wireshark.org/ и для отладки просто юзал похожий сайт без использования ssl
 - Дальше все просто, смотришь сетевые пакеты оригинальные (генерируемые вебмордой браузера), и свои. Находишь разницу, и сводишь их до тех пор, пока не
 получишь нужный тебе ответ, или не сведешь их 1 к 1.



Название: Re: QNetworkRequest vs AJAX возможно ли такое вообще?
Отправлено: Игорь от Ноябрь 28, 2017, 09:00
- Прежде всего нужна максимально полная отладочная информация, в твоем случае это https://www.telerik.com/fiddler , но я для тех же целей воспользовался
 https://www.wireshark.org/ и для отладки просто юзал похожий сайт без использования ssl

Ухты, спасибо, дружище. Все сразу получилось, где ты раньше-то был. У меня оказывается проблема-то была в кодировке при передаче параметров, а я все на заголовки грешил...

Вот что у меня по итогу получилось:
Код:
	const static QUrl AddressServiceUrl = QString("https://egisz.medkirov.ru/e-reg2.nsf/getRegion.xsp"); 
.........
.........
networkManager = new QNetworkAccessManager(this);
networkManager->setProxy((!QNetworkProxyFactory::systemProxyForQuery().isEmpty()) ? QNetworkProxyFactory::systemProxyForQuery()[0] : QNetworkProxy());
QNetworkRequest requisitesServiceRequest(AddressServiceUrl);

QByteArray requisitesServiceRequestBody;
requisitesServiceRequestBody.append("city=");
requisitesServiceRequestBody.append(QUrl::toPercentEncoding("Киров"));
requisitesServiceRequestBody.append("&q=");
requisitesServiceRequestBody.append(QUrl::toPercentEncoding("Грибоедова"));
requisitesServiceRequestBody.append("&f=getStreet&village=&dom=37&medgroup=");
requisitesServiceRequestBody.append(QUrl::toPercentEncoding("Терапия"));

QNetworkReply *requisitesServiceReply = networkManager->post(requisitesServiceRequest, requisitesServiceRequestBody);
connect(requisitesServiceReply, &QNetworkReply::finished, [=]() {
if ((requisitesServiceReply->error() == QNetworkReply::NoError)) {
QString requisitesServiceReplyBody = QString::fromUtf8(requisitesServiceReply->readAll());
QUrl qur = requisitesServiceReply->url();
QList<QByteArray> head = requisitesServiceReply->rawHeaderList();
QList<QNetworkReply::RawHeaderPair> headd = requisitesServiceReply->rawHeaderPairs();


}
});


Название: Re: QNetworkRequest vs AJAX возможно ли такое вообще? (РЕШЕНО)
Отправлено: kambala от Ноябрь 30, 2017, 13:15
что тут за ад творится? :D


Название: Re: QNetworkRequest vs AJAX возможно ли такое вообще? (РЕШЕНО)
Отправлено: __Heaven__ от Ноябрь 30, 2017, 13:51
что тут за ад творится? :D
чтобы разобраться с этим, нужно съездить в Киров на Грибоедова 37 и пройти некую терапию. ыыы :D


Название: Re: QNetworkRequest vs AJAX возможно ли такое вообще? (РЕШЕНО)
Отправлено: __Heaven__ от Ноябрь 30, 2017, 13:56
хех


Название: Re: QNetworkRequest vs AJAX возможно ли такое вообще? (РЕШЕНО)
Отправлено: Игорь от Декабрь 08, 2017, 15:56
Ага, ага, пришли постебаться, нет чтоб чайнику помочь.
Заводы стоят, одни гитаристы стеберы в стране.


Название: Re: QNetworkRequest vs AJAX возможно ли такое вообще? (РЕШЕНО)
Отправлено: titan83 от Декабрь 08, 2017, 20:52
что тут за ад творится? :D
похоже на безжалостную российскую автоматизацию.


Название: Re: QNetworkRequest vs AJAX возможно ли такое вообще? (РЕШЕНО)
Отправлено: titan83 от Декабрь 08, 2017, 20:52
А по теме: автор, так у тебя все получилось? или нет? непонятно.


Название: Re: QNetworkRequest vs AJAX возможно ли такое вообще? (РЕШЕНО)
Отправлено: Игорь от Декабрь 11, 2017, 07:36
А по теме: автор, так у тебя все получилось? или нет? непонятно.
да, все получилось.