自动提交表单的代码

 bool CAutoReleaseView::InitConnectAndPublish(CString strReqPostURL)
{
    WORD wPort = 0;
    DWORD dwServiceType = 0;
    int nSendDataLen    = 0;
    
    CString strPostNetPage;
    CString strLanguage = _T(" zh-cn");  
    CString strServerName;
    CString strTemp;
    
    
    CString m_strReqPostURL;
    m_strReqPostURL = _T("http://member.skycn.com/update_send.php");
    strReqPostURL = m_strReqPostURL;  //##### 此值应从数据库得到,暂时给其赋一个值。
    AfxParseURL(m_strReqPostURL, dwServiceType, strServerName, strPostNetPage, wPort);
    
    CInternetSession session;    
    CHttpConnection *pConnection = session.GetHttpConnection(strServerName);   //网站服务器    
    
    CHttpFile *pFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST, strPostNetPage);   //直接向发布信息的页面提交数据
    
    
    //填写HTTP请求头,这些数据可以由抓包分析得到
    pFile->AddRequestHeaders("POST " + strPostNetPage + " HTTP/1.1");
    pFile->AddRequestHeaders("Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*");  //接收所有类型
    //    pFile->AddRequestHeaders("Accept: */*");
    pFile->AddRequestHeaders("Referer: " + strReqPostURL);           //也就是整个URL地址
    pFile->AddRequestHeaders("Accept-Language:" + strLanguage);    
    pFile->AddRequestHeaders("Content-Type: multipart/form-data; boundary=---------------------------7d11dc24268052c"); //接受的类型
    pFile->AddRequestHeaders("Accept-Encoding: gzip, deflate");  
    pFile->AddRequestHeaders("User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
    
    CString strSendData;
    if(!GetSendData(strSendData))
    {
        AfxMessageBox("GetSendData(strSendData) error.............");
    }
    nSendDataLen = strSendData.GetLength();
    strTemp.Format("%d", nSendDataLen);
    pFile->AddRequestHeaders("Content-Length: "+strTemp);  //数据长度
    strTemp.Empty();
    
    pFile->AddRequestHeaders("Connection: Keep-Alive");
    pFile->AddRequestHeaders("Cache-Control: no-cache");
    
    //HTTP头后面就应该是真正的数据了,下面strFormData中就是要提交的数据,服务器处理返回的信息在pFile中    
    pFile->SendRequest(NULL, 0, strSendData.GetBuffer(0), strSendData.GetLength());  //提交所有数据
    
    
    //处理提交的结果,如果是200就是OK
    DWORD dwStatusCode = 0;
    pFile->QueryInfoStatusCode(dwStatusCode);
    CString str1;
    str1.Format("%d", dwStatusCode);
//    AfxMessageBox(_T("dwStatusCode = ") + str1);

    /*
    if(dwStatusCode>=200 && dwStatusCode<=299)
    {
        AfxMessageBox("Post Success!!!!!!!!!!!!!!!!!");
    }
    else if(dwStatusCode>=300 && dwStatusCode<=399)
    {
        AfxMessageBox("重定向,客户端需要根据返回的信息做进一步处理");
    }
    else if(dwStatusCode>=400 && dwStatusCode<=499)
    {
        AfxMessageBox("客户端请求出错");
    }
    else if(dwStatusCode>=500 && dwStatusCode<=599)
    {
        AfxMessageBox("服务器端出错");
    }
    */
    
    //数据读出来后把该关闭的东西都关掉
    pFile->Close();
    pConnection->Close();
    delete pFile;
    delete pConnection;
    session.Close();
    
    return true;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值