WinInet编程:CHttpFile获取请求头信息注意的几个问题

来源:互联网 发布:js数组reduce 编辑:程序博客网 时间:2024/05/16 07:26

            最近,在进行Http协议下的WinInet编程,出现了不少问题。自己在解决这些问题的同时,觉得有必要将一些问题与大家分享一下。这里讲一下CHttpFile获取请求头信息要注意的几个问题。

 

            用MFC的WinInet封装类编程,如果想要获取请求头信息,按MSDN的说法是:在CHttpFile对象成功调用SendRequest函数后,再调用QueryInfo函数即可获得请求头信息。CHttpFile类的QueryInfo函数主要有以下几个:

 

第一个:

BOOL QueryInfo(
   DWORD dwInfoLevel,
   LPVOID lpvBuffer,
   LPDWORD lpdwBufferLength,
   LPDWORD lpdwIndex = NULL
) const;

第二个:

BOOL QueryInfo(
   DWORD dwInfoLevel,
   CString& str,
   LPDWORD dwIndex = NULL
) const;

            

          另外还有两个QueryInfo函数,在这里讨论用不到就不列出来了。根据我所查阅的资料,第二个函数在标志dwInfoLevel为HTTP_QUERY_CUSTOM、HTTP_QUERY_FLAG_REQUEST_HEADERS、HTTP_QUERY_FLAG_SYSTEMTIME、HTTP_QUERY_FLAG_NUMBER都会抛出Assertion,当时我的程序问题也出在这里,怎么查询都出错,后来调用第一个函数,将dwInfoLevel设置为HTTP_QUERY_FLAG_REQUEST_HEADERS|HTTP_QUERY_RAW_HEADERS_CRLF,就可以获取请求头信息了(注意要在成功调用SendRequest后)。

          另外,如果想要获取Http响应头信息,只需要将dwInfoLevel设置为HTTP_QUERY_RAW_HEADERS_CRLF即可,而且以上的两个函数都可以用。

原创粉丝点击