CString strFormData = "uname=****&upass=****";    // 需要提交的数据
    CInternetSession sess((LPCTSTR)"My Session",0);
    CHttpFile* fileGet;
    CString strHeaders = "Content-Type: application/x-www-form-urlencoded"; // 请求头    try
    {
        CHttpConnection* pConnection = sess.GetHttpConnection( "192.168.15.80:8080" ); 
        fileGet = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST, "/navigation/check?act=in");
                CString strSentence = "";
        CString strGetSentence = "";
        if(fileGet)
        {
           fileGet->SendRequest(strHeaders, (LPTSTR)(LPCTSTR)strFormData, strFormData.GetLength());
           while(fileGet->ReadString(strSentence))    // 读取提交数据后的返回结果
            {
                strGetSentence += strSentence + char(13) + char(10);
            }
            cout<<strGetSentence<<endl; // 显示返回内容            
            
        }
        else
        {
            cout<<"can not find!"<<endl;
        }
        strFormData.Empty();            //不加会导致内存泄露
        strHeaders.Empty();             //不加会导致内存泄露
        temp_id.Empty();                //不加会导致内存泄露
        temp_password.Empty();          //不加会导致内存泄露
        path.Empty();                   //不加会导致内存泄露
        fileGet->Close();
        delete fileGet;
        fileGet = NULL;
        pConnection->Close();
        delete pConnection;
        pConnection = NULL;
        
    }
    catch(CException* e)
    {
        fileGet = 0;
        e->ReportError();
        e->Delete();
    }
   我的代码水平一般,上面代码有一个问题是这样:
如果不打开fiddler这个抓包工具,它运行提示“无法与服务器建立连接”,打开抓包工具之后能够正常
返回post请求之后收到的数据,请大神帮忙给看看是哪的问题。C++ POST HTTP 

解决方案 »

  1.   

    你好,现在的情况是如果不打开抓包工具,在第16行的代码就会抛出异常,异常的提示就是“无法与服务器建立连接”,也就是发不出去post的请求。而打开抓包工具这段代码是能正常运行的。
      

  2.   

    http://blog.csdn.net/visualeleven/article/details/6656224
    一个模拟登陆的例子,希望对你有帮助~
      

  3.   

    版主,我按照你帖子里addheader的方式修改了我的程序,效果还是一样:
    如果不打开抓包软件工具,我的程序就无法连接服务器。
    打开抓包软件工具,我的程序就能正确发送请求,也能接收到正确的返回信息
      

  4.   

    没用过fiddler,不知道会不会干涉你发的包,可以换其他更底层的抓包工具看看,比如wireshark
      

  5.   

    参考我的博客代码试试看  使用HTTP传输 使用 HttpTranslate ( CHttpConnection::HTTP_VERB_POST, ……
      

  6.   

    是我的GetHttpConnection使用错误。比如一个链接"http://192.168.15.80:8080/navigation/check?act=in",在GetHttpConnection中应该像下面使用CHttpConnection* pConnection = sess.GetHttpConnection( "192.168.15.80",(INTERNET_PORT)8080 );  以前没有做过这方面的东西,给大家当个反面教材吧