InternetOpenUrl使用和HTTP头设置

 

InternetOpenUrl通常用在直接打开某个完整的URL.

LPCTSTR lpURL = _T("http://192.168.8.25/downloadfile.data");
HINTERNET hOpenUrl = ::InternetOpenUrl(hOpen, lpURL, NULL, 0, INTERNET_FLAG_NO_CACHE_WRITE, NULL);

这个调用会下载downloadfile.data文件(假设服务端能正常工作),通过InternetReadFile可以读取下载到的数据.

可以发现,这个函数并未指定HTTP头,调用之后发现,这个函数会自己产生一个http头如下图所示.

这样的HTTP头究竟是否正确,这取决于web服务器的配置,如果web服务器接受这样的http头,则正确,否则错误.

如果为InternetOpenUrl指定HTTP头会怎样?

HINTERNET hOpenUrl = ::InternetOpenUrl(hOpen, lpURL, _T("Connection: Keep-Alive"), -1, INTERNET_FLAG_NO_CACHE_WRITE, NULL);

可以看到,这个调用仅仅指定了一http头的一部分,那么这个调用能够产生正确的http头么?下图是产生的http头.

同上一幅图相比,这幅图多了一句"Connection: Keep-Alive",正好是设置的参数.由此可见,为该函数添加http头时,会覆盖系统默认设置的头或者添加上函数参数指定的.

posted on 2012-10-24 19:51  零一小子  阅读(3358)  评论(0)    收藏  举报

导航