मैं आईआईएस 7 सर्वर पर एक PHP स्क्रिप्ट पर POST डेटा के साथ WinHttp अनुरोध भेज रहा हूं, और POST बॉडी सर्वर द्वारा प्राप्त नहीं किया जा रहा है। यदि मैं जीईटी का उपयोग करके WinHttp के माध्यम से भेजता हूं, या एक पूर्ण शरीर के साथ POST, या एक शरीर के साथ POST का उपयोग कर एक HTML फॉर्म के माध्यम से भेजता हूं, तो सब कुछ अपेक्षित काम करता है।WinHttp POST body
HINTERNET hSession = WinHttpOpen(L"WinHTTP/1.0", WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0);//WINHTTP_FLAG_ASYNC);
HINTERNET mConnection = WinHttpConnect(hSession, L"127.0.0.1", 80, 0);
HINTERNET hRequest = WinHttpOpenRequest(mConnection, L"POST", L"/test.php", NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, 0);
void* bodyData = NULL;
DWORD bodyLength = 0;
bResult = WinHttpSendRequest(hRequest, WINHTTP_NO_ADDITIONAL_HEADERS, 0, bodyData, bodyLength, bodyLength, 0);
एक शरीर के साथ
:
एक शरीर के बिना:
HINTERNET hSession = WinHttpOpen(L"WinHTTP/1.0", WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0);//WINHTTP_FLAG_ASYNC);
HINTERNET mConnection = WinHttpConnect(hSession, L"127.0.0.1", 80, 0);
HINTERNET hRequest = WinHttpOpenRequest(mConnection, L"POST", L"/test.php", NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, 0);
char* pBodyStr = "a=1&b=2";
void* bodyData = (void*) pBodyStr;
DWORD bodyLength = strlen(pBodyStr);
bResult = WinHttpSendRequest(hRequest, L"content-type:application/x-www-form-urlencoded", -1, bodyData, bodyLength, bodyLength, 0);
तो
यहाँ कुछ सरल द्वारा WinHTTP पोस्ट के साथ और एक शरीर के बिना कॉल के बीच का अंतर दिखा कोड है केवल अंतर पैरामीटर पैरामीटर, और सामग्री-प्रकार हेडर हैं। वास्तव में अजीब चीज यह है कि यह 20 बार में से 1 काम कर सकता है, लेकिन आमतौर पर शरीर को सर्वर द्वारा प्राप्त नहीं किया जाता है और यह समय समाप्त हो जाता है। यहां कुछ भी गलत है?