通过Post方式访问Web页面

这篇博客提供了一个名为PostData的函数示例,用于通过Post方式向服务器提交参数。函数接受提交地址、参数和返回内容作为输入,通过创建会话、连接服务器、打开请求并发送数据来实现。如果请求成功,它将读取响应内容并返回true。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

总有些人问我关于通过Post方式向Page页提交参数的方法,下面我写了一个函数,供一些初学者参考。

//****************************************************************************************//
//函数 PostData
//主要功能: Post方式向服务器传数据
//参数列表:
//    1、strUrl:提交地址
//    2、strPara:提交的参数
//    3、strContent:返回的网页内容
//返回值: 如果成功则返回true
//备注:
//****************************************************************************************//
bool PostData(CString strUrl, const CString &strPara, CString &strContent)
{
   
bool bRet = false;
    CString strServer, strObject, strHeader, strRet;
    unsigned
short nPort;
    DWORD dwServiceType;
   
if(!AfxParseURL(strUrl, dwServiceType, strServer, strObject, nPort))//不是有效有网络地址!
        return false;

    CInternetSession sess;
//Create session
    CHttpFile* pFile = NULL;
    CHttpConnection
*pServer = sess.GetHttpConnection(strServer, nPort);
   
if(pServer == NULL)//连接服务器失败!
        return false;

    pFile
= pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST,strObject,NULL,1,NULL,NULL,INTERNET_FLAG_EXISTING_CONNECT);
   
if(pFile == NULL)//找不到网络地址
        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[2049];
        memset(buffer,
0, 2049);
       
int nReadCount = 0;
       
while((nReadCount = pFile->Read(buffer, 2048)) > 0)
        {
            strContent
+= buffer;
            memset(buffer,
0, 2049);
        }
        bRet
= true;
    }
   
else//错误
        bRet = false;
    pFile
->Close();
    sess.Close();
   
return bRet;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值