想用发送request的方式在程序中获得网页的源代码
OpenRequest和AddRequestHeaders参数要怎么填,最好举sina主页为例说明下?
比如下面几个空着的参数怎么填?
CInternetSession session;
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(空);
       
        

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

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

  5.   

    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"));
      

  6.   

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

  7.   

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