zoukankan      html  css  js  c++  java
  • C++ POST方式访问网页

    bool PostContent(CString strUrl, const CString &strPara, CString &strContent, CString &strDescript)//第一个参数为URL头
    {                         //第二个参数为要post表单的内容
        try{                       //第三个参数用于保存页面返回的信息
                             //第四个参数用于记录日志
            strDescript = "提交成功完成!";
            bool bRet = false;
            CString strServer, strObject, strHeader, strRet;
            unsigned short nPort;
            DWORD dwServiceType;
            if(!AfxParseURL www.90168.org (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: 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[256];
                memset(buffer, 0, 256);
                int nReadCount = 0;
                while((nReadCount = pFile->Read(buffer, 2048)) > 0)
                {
                    strContent += buffer;
                    memset(buffer, 0, 256);
                }
                bRet = true;
            }
            else
            {
                strDescript = "网站服务器错误" + strUrl;
                bRet = false;
            }
            ////////////////////////////////////////
            pFile->Close();
            sess.Close();
            return bRet;
        }
        catch(...)
        {
            int nCode = GetLastError();
            strDescript.Format("向服务器post失败!错误号:%d", nCode);
            return false;
        }
    }

  • 相关阅读:
    NOIP2011 D1T1 铺地毯
    NOIP2013 D1T3 货车运输 倍增LCA OR 并查集按秩合并
    POJ 2513 trie树+并查集判断无向图的欧拉路
    599. Minimum Index Sum of Two Lists
    594. Longest Harmonious Subsequence
    575. Distribute Candies
    554. Brick Wall
    535. Encode and Decode TinyURL(rand and srand)
    525. Contiguous Array
    500. Keyboard Row
  • 原文地址:https://www.cnblogs.com/tianshifu/p/6379715.html
Copyright © 2011-2022 走看看