我在使用ChttpFile 向一个网站POST数据的时候 截获了发送出去的封包 , 发现发送出去的方式是GET方式
发送的代码为
        CInternetSession session;
CHttpFile* pFile =(CHttpFile*)session.OpenURL(url);//打开文件
        BOOL result = pFile->SendRequest(strHeader, (LPVOID)(LPCTSTR)PostData, PostData.GetLength());返回的数据是这个网站的首页...通过参照网上的POST事例  我又改了一下 增加了一个CHttpConnection
发送的代码为
        CHttpConnection* pConnection = session.GetHttpConnection("url,0,80,NULL,NULL);
CHttpFile* pFile = Connection->OpenRequest(CHttpConnection::HTTP_VERB_POST,"
                           /chaxunjieguo.asp?ac=wf" );
BOOL result = pFile->SendRequest(strHeader, (LPVOID)(LPCTSTR)PostData, PostData.GetLength());通过截获的数据包分析,没有什么问题.但是此时发送就是一个域名解析错误... 问题:
1. 第一种方案里面有没有能够改变发送数据方式(将GET转换为POST) ?
2. 第二种方案为什么会出现域名解析错误?

解决方案 »

  1.   


    bool PostContent(CString strUrl, const CString &strPara, CString &strContent, CString &strDescript)
    {
        try{        strDescript = "提交成功完成!";
            bool bRet = false;
            CString strServer, strObject, strHeader, strRet;
            unsigned short nPort;
            DWORD dwServiceType;
            if(!AfxParseURL(strUrl, dwServiceType, strServer, strObject, nPort))
            {
                strDescript = strUrl + "不是有效有网络地址!";
                return false;
            }
            CInternetSession sess;//Create session        CHttpFile* pFile;
            //////////////////////////////////////////////
            CHttpConnection *pServer = sess.GetHttpConnection(strServer, nPort); 
            if(pServer == NULL)
            {
                strDescript = "对不起,连接服务器失败!";
                return false;
            }
            pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST,strObject,NULL,1,NULL,NULL,INTERNET_FLAG_EXISTING_CONNECT); 
            if(pFile == NULL)
            {
                strDescript = "找不到网络地址" + strUrl;
                return false;
            }//        pFile -> AddRequestHeaders("Content-Type: text/xml; charset=utf-8");
            pFile -> AddRequestHeaders("Content-Type: application/x-www-form-urlencoded"); 
            pFile -> AddRequestHeaders("Accept: */*"); 
            pFile -> SendRequest(NULL, 0, (LPTSTR)(LPCTSTR)strPara, strPara.GetLength());         CString strSentence;
            DWORD dwStatus;
            DWORD dwBuffLen = sizeof(dwStatus);
            BOOL bSuccess = pFile->QueryInfo(
                HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER,
                &dwStatus, &dwBuffLen);        if( bSuccess && dwStatus>=  200 && dwStatus<300) 
            {
                char buffer[2049];
                memset(buffer, 0, 2049);
                int nReadCount = 0;
                while((nReadCount = pFile->Read(buffer, 2048)) > 0)
                {
                    strContent += buffer;
                    memset(buffer, 0, 2049);
                }
                bRet = true;
            }
            else
            {
                strDescript = "网站服务器错误" + strUrl;
                bRet = false;
            }
            ////////////////////////////////////////
            pFile->Close();
            sess.Close();
            return bRet;
        }
        catch(...)
        {
            int nCode = GetLastError();
            strDescript.Format("向服务器post失败!错误号:%d", nCode);
            return false;
        }
    }
    你看这个改改看
      

  2.   

    连CSDN的代码着色都能看出你的字符串错误...
      

  3.   

    参考http://topic.csdn.net/u/20090518/13/16fd0167-69f8-4613-8338-bdb1c13a2460.html差不多的