#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. Есть идеи? я все еще застрял, не могу понять это!