在调用微软winhttp的WinHttpQueryHeaders函数时候遇到的问题
来源:互联网 发布:数控车倒螺纹编程实例 编辑:程序博客网 时间:2024/05/16 11:24
函数原型如下:
BOOL WINAPI WinHttpQueryHeaders( __in HINTERNET hRequest, __in DWORD dwInfoLevel, __in_opt LPCWSTR pwszName, __out LPVOID lpBuffer, __inout LPDWORD lpdwBufferLength, __inout LPDWORD lpdwIndex);
开发环境:win7,vs2010
问题1:当参数lpBuffer为NULL,传入dwBufferLen接收缓冲区长度,按照msdn里的描述,这个时候函数应该返回FALSE,dwBufferLen应该返回实际需要缓冲区的大小,调用GetLastError() 应该返回ERROR_INSUFFICIENT_BUFFER。
lpBuffer [out] Pointer to the buffer that receives the information. Setting this parameter to WINHTTP_NO_OUTPUT_BUFFER causes this function to return FALSE. Calling GetLastError then returns ERROR_INSUFFICIENT_BUFFER and lpdwBufferLength contains the number of bytes required to hold the requested information.
实际测试结果是,dwBufferLen返回实际要缓冲区的大小,而GetLastError()并没有返回ERROR_INSUFFICIET_BUFFER,而是返回0
问题2:想要通过该函数查询hRequest所关联的cookie,获取不到。根据msdn的描述
WINHTTP_QUERY_COOKIE Retrieves any cookies associated with the request.
实际代码测试结果:
调用
dwBufLen = 0;
WinHttpQueryHeaders(hRequest,
WINHTTP_QUERY_COOKIE|WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
WINHTTP_HEADER_NAME_BY_INDEX,
NULL,
&dwBufLen,
WINHTTP_NO_HEADER_INDEX);
返回dwBufLen始终为0,,而且GetLastError() 也没有返回ERROR_INSUFFICIENT_BUFFER的错误。获取不到和hRequest相关联的cookie信息。
问题3:在查询Request的原始请求头的时候(WINHTTP_QUERY_RAW_HEADERS_CRLF|WINHTTP_QUERY_FLAG_REQUEST_HEADERS),返回的数据不是实际发出去的http请求头,数据简单,不完全,例如没有获得实际发送http请求头时所带的cookie字段,通过实际抓包分析,是有cookie字段的。
GET / HTTP/1.1User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)Connection: Keep-Alive
- 在调用微软winhttp的WinHttpQueryHeaders函数时候遇到的问题
- 在图片上传时候遇到的问题
- zabbix在configure时候遇到的问题
- 问题记录:在打包APK的时候遇到的问题
- 问题记录:在打包APK的时候遇到的问题
- 学习main函数的时候遇到的一些问题
- 函数嵌套调用遇到的问题
- 在自定义鼠标指针的时候遇到的一些问题
- 在写JAVA程序的时候遇到的问题
- 在exp/imp导入导出的时候遇到的问题
- 在配置Zend Debugger调试的时候遇到的问题
- 在弄毕设表的时候 遇到的各种想死问题
- 在linux编译的时候遇到的问题
- 在玩phpcms的时候遇到的一些问题
- 在移植rt3070驱动的时候编译遇到的问题
- 在启动mq的时候遇到的问题
- 在做App上线打包的时候遇到的问题
- Spark在shuffle数据的时候遇到的问题
- LeetCode Letter Combinations of a Phone Number
- django staticfiles DEBUG设置为True或者False的关键内幕
- LeetCode Longest Common Prefix
- POJ 2299 Ultra-QuickSort
- 杭电ACM 2005 第几天?
- 在调用微软winhttp的WinHttpQueryHeaders函数时候遇到的问题
- 网游测试登陆的程序
- POJ 3265 模拟 贪心 的错误用法
- Html5 Canvas开发之画圆(时钟,贝塞尔曲线)和旋转缩放
- 《UNIX环境高级编程》apue源代码Ubuntu下的编译
- “无线连接未识别网络”的解决方法之一
- 辣妈是怎样炼成的
- Leetcode: Anagrams
- 第八章 自我反省的功夫