怎么用wininet中的OpenRequest?

http://www.cnblogs.com/devcjq/articles/2484798.html


id="Topic_"想用发送request的方式在程序中获得网页的源代码
OpenRequest和AddRequestHeaders参数要怎么填,最好举sina主页为例说明下?
比如下面几个空着的参数怎么填?
CInternetSessionsession;
session.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT,30*1000);
session.SetOption(INTERNET_OPTION_CONNECT_BACKOFF,1000);
session.SetOption(INTERNET_OPTION_CONNECT_RETRIES,1);
CHttpConnection*pconnection=session.GetHttpConnection("www.sina.com");//网站服务器

CHttpFile*pfile=pconnection->OpenRequest(空,空);

pfile->AddRequestHeaders(空);
pfile->AddRequestHeaders(空);
pfile->AddRequestHeaders(空);
pfile->AddRequestHeaders(空);
pfile->AddRequestHeaders(空);
pfile->AddRequestHeaders(空);
pfile->AddRequestHeaders(空);

答:>pfile->AddRequestHeaders(_T("Accept:*/*\r\n\r\n"));这是最普通的请求头。
具体协议要去查看HTTP协议,支持哪些头信息。如果有多个头写在一起,中间都要用\r\n分开,意思是每个头占一行

答:>那CHttpFile*pfile=pconnection->OpenRequest(空,空);
要怎么填呢,关键是这个函数我不会。。

答:>OpenRequest(_T("GET"),_T("/main/index.html"));
OpenRequest(HTTP_VERB_GET,_T("/main/index.html"));

答:>那你能给一段用这种方式获取sina主页源代码的代码吗?
我用抓包工具抓到的好像不是这样

答:>CHttpConnection*pconnection=session.GetHttpConnection(_T("www.sina.com"));
CHttpFile*pfile=pconnection->OpenRequest(HTTP_VERB_GET,_T("/"),NULL,1,(LPCTSTR*)_T("*/*\0"));
//pfile->AddRequestHeaders(_T("Accept:*/*\r\n\r\n"));
pfile->SendRequest(_T("Accept:*/*\r\n\r\n"));

答:>CHttpConnection*pconnection=session.GetHttpConnection(_T("www.sina.com"));
CHttpFile*pfile=pconnection->OpenRequest(CHttpConnection::HTTP_VERB_GET,"");
pfile->SendRequest(NULL,0,"",0);
这样写就可以了,为什么OpenRequest第二个参数可以是任意一个字符串啊?

答:>""表示当前目录,相当于你请求的是http://www.sina.com
"/"表示绝对目录,相当于你请求的是http://www.sina.com/,所以是一样的

转自:http://hi.baidu.com/winnyang/blog/item/66f3b3faaaac128e9f514639.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值