如何利用HttpOpenRequest,HttpAddRequestHeaders,HttpSendRequestEx这三个函数发送POST请求?

guguqiaqia 2009-05-21 04:53:25
如何利用HttpOpenRequest,HttpAddRequestHeaders,HttpSendRequestEx这三个函数发送POST请求?

我准备使用POST请求做个登录操作。

根据调研需要用到这几个函数,但是我在简单配置HTTP header的时候,如果简单的使用一句Content-type:application/x-www-form-urlencoded的时候,HttpAddRequestHeaders可以执行成功。
但我还想加入其他的信息,比如帐号和密码信息,用POST命令方式登录,但是,配置之后,此海曙怎么也无法执行成功。错误提示是函数参数错误。

请问有没有朋友做过此方面的?
...全文
1833 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ronald_Z 2011-07-07
  • 打赏
  • 举报
回复
路过,参考一下
iceor 2010-08-28
  • 打赏
  • 举报
回复
学习一下,哈哈
LULU1018 2010-05-25
  • 打赏
  • 举报
回复
hao
wwwhhb4001 2009-05-22
  • 打赏
  • 举报
回复

niu
guguqiaqia 2009-05-21
  • 打赏
  • 举报
回复
感谢,试验一下。
biweilun 2009-05-21
  • 打赏
  • 举报
回复

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;
}
}

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧