2013-01-11 129 views
0

我想使用IXMLHTTPRequest2對象在Windows 8上發送HTTP請求,並且我想將傳出的Accept-Encoding標頭自定義爲缺省值「gzip,deflate」以外的內容。當我嘗試使用SetRequestHeader方法設置Accept-Encoding標頭時,方法調用成功,但仍然使用默認標頭值而不是我提供的值(使用Wireshark捕獲HTTP請求進行驗證)發送請求。覆蓋IXMLHTTPRequest2的默認標頭

示例代碼(簡化beverity):的請求

::CoCreateInstance(CLSID_FreeThreadedXMLHTTP60, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&m_pXHR)); 
m_pXHR->Open("GET", "http://192.168.0.100/test", m_pXHRCallback.Get(), NULL, NULL, NULL,NULL); 
m_pXHR->SetRequestHeader(L"Accept-Encoding", L"gzip"); 
m_pXHR->Send(NULL, 0); 

Wireshark的捕獲該被製成:

GET /users/me/id HTTP/1.1 
Accept: */* 
Host: 192.168.0.100 
Accept-Encoding: gzip, deflate 
Connection: Keep-Alive 

回答

1

根據該docs for SetRequestHeader,它只是一個附加操作。你得到了gzip Accept-Encoding,所以我認爲它是按照預期工作的。但是,我沒有看到刪除默認標題的方法。