При попытке отправить запрос на получение, используя HttpSendRequest
, на веб-сайт, обратите внимание, что он был опробован на нескольких сайтах (google
, stackoverflow
, youtube
и т. Д.), Возникает ошибка,ошибка 12152 (The server returned an invalid or unrecognized response
).
При использовании Fiddler для получения более нормального ответа это ошибка [Fiddler] ReadResponse() failed: The server did not return a complete response for this request. Server returned 0 bytes.
Как ни странно, InternetOpenUrl
не дает сбой даже всемодни и те же параметры используются. Вот мой код:
HINTERNET hInternet = InternetOpenW(..., DIRECT, NULL, NULL, 0);
HINTERNET hHttp = InternetConnectW(hInternet, L"stackoverflow.com", 443, NULL, NULL, INTERNET_SERVICE_HTTP, INTERNET_FLAG_SECURE, 0);
static const WCHAR anyAccept[] = { '*','/','*', 0 };
LPCWSTR accept[2] = { anyAccept, NULL };
HINTERNET hRequest = HttpOpenRequestW(hHttp, L"GET", L"/", NULL, NULL, accept, 0, 0);
HttpSendRequestW(hRequest, NULL, 0, NULL, 0);
//InternetOpenUrlW(hInternet, L"https://stackoverflow.com/", NULL, 0, 0, 0);
Насколько я могу судить, глядя на источник, размещенный на ReactOS , InternetConnectW
, используя службу http, использует HTTP_Connect
, простоподобно InternetOpenUrl
, единственное отличие состоит в том, что в OpenUrl он устанавливает для параметра dwInternalFlags
значение INET_OPENURL
, в то время как в Connect он устанавливает его в 0, но после этого все те же грехи, которые OpenUrl также использует HttpOpenRequestW
& HttpSendRequestW
Так в чем же проблема, почему Connect => OpenRequest(GET) => SendRequest
приводит к коду ошибки 12152, но выполнение OpenUrl (то же самое под капотом) завершается успешно?