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