我正在尝试使用 IXMLHTTPRequest2 对象在 Windows 8 上发送 HTTP 请求,并且我想将传出的 Accept-Encoding 标头自定义为“gzip,deflate”的默认值以外的其他内容。当我尝试使用 SetRequestHeader 方法设置 Accept-Encoding 标头时,方法调用成功,但仍使用默认标头值而不是我提供的值发送请求(通过使用 Wireshark 捕获 HTTP 请求进行验证)。
示例代码(为简化起见):
::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