Есть делфийский код, в котором средствами WinApi делается post запрос:
Delphi
Result := SendPOST('http://www.xxx.ru', StringToAnsi(Query, CP_ACP), Answer);
где Query выглядит так:
POST /xxx.php HTTP/1.1
Host: www.xxx.ru
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; WebMoney Advisor; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)
Accept: /
Accept-Encoding: identity
Accept-Language: ru-RU
Connection: Close
Content-Type: application/x-www-form-urlencoded
Content-Length: 103
email=xxxxxxxxx@xxxxxx.ru&key=xxxxxxxxxxxxxxxxxxxx&id=xxxxxx&h=3ffdfe2d17d892aedc681b010598337c&check=1
Вопрос в том, как корректно это сделать на Qt. Судя по тому, что пишут в интернетах, нужно часть строк переписать на setRawHeader, но у меня ничего не получается - ответ от сервера всегда один - мол, не понятно, что ты мне вообще прислал.
В общем моя попытка:
C++ (Qt)
QString post = "email=" + email + "&key=" + key + "&id=" +
id + "&h=" + hardId + "&check=" + ch + "&getd=1";
QString query = "POST /xxx.php HTTP/1.1\r\n"
"Host: www.xxx.ru\r\n"
"User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; "
"Trident/4.0; WebMoney Advisor; SLCC2; .NET CLR 2.0.50727; "
".NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)\r\n"
"Accept: /\r\n"
"Accept-Encoding: identity\r\n"
"Accept-Language: ru-RU\r\n"
"Connection: Close\r\n"
"Content-Type: application/x-www-form-urlencoded\r\n"
"Content-Length: " + QString::number(post.size()) + "\r\n\r\n" +
post;
QNetworkRequest request("http://www.xxx.ru");
manager.post(request, query.toLocal8Bit());
Осложняется еще все тем, что данные передаются/принимаются в кодировке 1251 (toLocal8Bit в данном случае - это я потом переделаю)