Запрос HTTPPOST всегда возвращает double и 0?

#php #c #http #post

#php #c #http #Публикация

Вопрос:

у меня странная проблема. Я использую библиотеку wininet для отправки HTTP-запроса post на мой сервер, но когда я это делаю, он возвращает одно и то же дважды с 0.

Код запроса Http post

 BYTE* DoPostRequest(std::wstring ip, int port, std::wstring path, std::string data)
{
    HINTERNET hHttpSession, hHttpRequest, hIntSession;
    DWORD timeout;
    DWORD dwRead;

    hIntSession = InternetOpen(L"Somerandomshiz" //Utils::StringToWString(XorStr()).c_str()
        , INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);

    if (!hIntSession)
        std::cout << "hIntSession Faild" << std::endl;

    timeout = 300 * 1000;
    if (!InternetSetOption(hIntSession, INTERNET_OPTION_RECEIVE_TIMEOUT, amp;timeout, sizeof(timeout)) ||
        !InternetSetOption(hIntSession, INTERNET_OPTION_SEND_TIMEOUT, amp;timeout, sizeof(timeout)) ||
        !InternetSetOption(hIntSession, INTERNET_OPTION_CONNECT_TIMEOUT, amp;timeout, sizeof(timeout)))
        std::cout << "!InternetSetOption(hIntSession, INTERNET_OPTION_RECEIVE_TIMEOUT, amp;timeout, sizeof(timeout)) Faild" << std::endl;

    hHttpSession = InternetConnect(hIntSession, ip.c_str(), port, 0, 0, INTERNET_SERVICE_HTTP, 0, NULL);
    if (!hHttpSession)
        std::cout << "hHttpSession Faild" << std::endl;

    hHttpRequest = HttpOpenRequest(
        hHttpSession,
        L"POST",
        path.c_str(),
        0, 0, NULL, INTERNET_FLAG_RELOAD, 0);

    if (!hHttpRequest)
        std::cout << "hHttpRequest Faild" << std::endl;

    std::string szHeaders = "Content-Type: application/x-www-form-urlencoded;rnContent-Length: ";
    szHeaders  = std::to_string(data.length());

    if (!HttpSendRequestA(hHttpRequest, szHeaders.c_str(), szHeaders.length(), (LPVOID)data.c_str(), data.length()))
        std::cout << "HttpSendRequestA Faild" << std::endl;

    //payload
    const int BUFFERSIZE = 7 * 1000 * 1000; //7mb
    dwRead = 0;
    CHAR* szAsciiBuffer = new CHAR[BUFFERSIZE];
    memset(szAsciiBuffer, 0, BUFFERSIZE);
    InternetReadFile(hHttpRequest, szAsciiBuffer, BUFFERSIZE, amp;dwRead);

    InternetCloseHandle(hHttpRequest);
    InternetCloseHandle(hHttpSession);
    InternetCloseHandle(hIntSession);

    return (BYTE*)szAsciiBuffer;
}
 

Мой вызов

 auto response = (char*)g_pUtilis->DoPostRequest(
    L"localhost", 80, L"test.php",
    std::string("id=")   "231"
);
 

PHP-код

 echo "test";
 

И что я получаю обратно —
изображение результата

Редактировать: Кажется, что другая информация хороша только тогда, когда я использую PHP echo / просто возвращаю php что-либо. Есть идеи? я не могу найти много информации в Интернете.

Заранее спасибо 🙂

РЕДАКТИРОВАТЬ: по-прежнему возникает эта проблема, которую невозможно решить. итак

 echo "1234";
exit;
 

в основном в браузере выводится 1234, но в моей консоли с помощью POST он возвращает — 1234234

0 // Я понятия не имею, откуда взялся этот 0. Необработанное изображение

Кажется, это происходит только на namecheap.com серверы. Он отлично работает на веб-сервере OVH VPS, а также 000webhost.com / hosting24.com (то же самое, верно? 😛 )

Если у кого-нибудь есть какие-либо идеи, что происходит, пожалуйста, помогите, я не хочу тратить больше денег только из-за этой ошибки.

Комментарии:

1. Есть идеи? я все еще застрял, не могу понять это!