mfc发送http post请求 求助

yule253456724 2012-02-23 04:01:25
我想问一下,mfc发送post请求用哪个类比较简单易学,给我思路,谢谢,最好有资料或者代码。
服务器给我的接口
发送包如下:


<?xml version="1.0" encoding="gb2312"?>

<SmsMessage>

<TimeStamp>2005052401234</TimeStamp>

< MobaddrName >test</ MobaddrName >

<Password>123456</Password>

<Mobile>13912345678</Mobile>

<Msg>短信内容</Msg>

<Date></Date>

</SmsMessage>




怎么拼接到post里啊 小弟不是很懂
...全文
617 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
一枝潇洒 2014-01-26
  • 打赏
  • 举报
回复
不知道怎么传参数啊
酷云 2013-05-31
  • 打赏
  • 举报
回复
用我的方法吧 http://blog.sina.com.cn/s/blog_49b531af0102e84j.html
云朵0101 2013-02-20
  • 打赏
  • 举报
回复
问题解决了吗?同样的疑问
yule253456724 2012-02-24
  • 打赏
  • 举报
回复

void CCHttppostDlg::getURLContext(LPCTSTR pstrURL )
{
try
{
CInternetSession sess;//建立会话
CHttpFile* pF=(CHttpFile*)sess.OpenURL(pstrURL);
CString strHeaders = _T("Content-Type: application/x-www-form-urlencoded");
CString strFormData = _T("<SmsMessage><TimeStamp>2005052401234</TimeStamp><MobaddrName>test</MobaddrName><Password>123456</Password><Mobile>13912345678</Mobile><Msg>短信内容</Msg><Date></Date></SmsMessage>");
BOOL result = pF->SendRequest(strHeaders,(LPVOID)(LPCTSTR)strFormData, strFormData.GetLength());

if(result)AfxMessageBox(_T("请求成功"));

CString szData,szAllData;
while(pF->ReadString(szData))
{
//读取文件
szAllData+="\r\n";
szAllData+=szData;
}
pF->Close();
sess.Close();
AfxMessageBox(szAllData);
AfxMessageBox(_T("获取数据成功"));
}
catch(CException *e)
{
AfxMessageBox(_T("获取数据失败"));
}
}
弱水垂钓 2012-02-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yule253456724 的回复:]

大牛们 来个例子呗 类文件也行
[/Quote]
2楼已经给你例子了
m_AgentName,m_Header, m_Host, m_url是一个CString类型
你只要把上面的字符串改成你的就可以用了
还要我们怎么解释!!!
yule253456724 2012-02-24
  • 打赏
  • 举报
回复
大牛们 来个例子呗 类文件也行
弱水垂钓 2012-02-24
  • 打赏
  • 举报
回复

BOOL hSendRequest = HttpSendRequest(hRequest, m_Header.c_str(),m_Header.length(), (LPVOID)(pLoginBody), m_BodyLen );

看到m_Header.c_str()没,这就是要发送的基于http协议的内容
你要发什么 就往这个m_Header里放就可以了Format
yule253456724 2012-02-24
  • 打赏
  • 举报
回复
三连了 还是没有人帮助我啊
yule253456724 2012-02-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wct511 的回复:]
HINTERNET hOpen = InternetOpen( m_AgentName.c_str(),INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);

HINTERNET hConnect = InternetConnect(hOpen, m_Host.c_str(), 80, _T(""), _T(""), INTERNET_SERVICE_H……
[/Quote]

那那个xml是怎么添加进去的呢
yule253456724 2012-02-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wct511 的回复:]
HINTERNET hOpen = InternetOpen( m_AgentName.c_str(),INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);

HINTERNET hConnect = InternetConnect(hOpen, m_Host.c_str(), 80, _T(""), _T(""), INTERNET_SERVICE_H……
[/Quote]

那那个xml是怎么添加进去的呢
WCT511 2012-02-23
  • 打赏
  • 举报
回复
HINTERNET hOpen = InternetOpen( m_AgentName.c_str(),INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);

HINTERNET hConnect = InternetConnect(hOpen, m_Host.c_str(), 80, _T(""), _T(""), INTERNET_SERVICE_HTTP, NULL, NULL);

HINTERNET hRequest = HttpOpenRequest(hConnect, m_Method.c_str(), m_Url.c_str(), HTTP_VERSION, m_Refer.c_str(), NULL ,INTERNET_FLAG_DONT_CACHE, NULL);

const char *pLoginBody = pBody.c_str();
int m_BodyLen = static_cast <DWORD> (strlen(pLoginBody));

BOOL hSendRequest = HttpSendRequest(hRequest, m_Header.c_str(),m_Header.length(), (LPVOID)(pLoginBody), m_BodyLen );

if(!hSendRequest)
return false;

InternetCloseHandle(hRequest);
InternetCloseHandle(hConnect);
InternetCloseHandle(hOpen);
WCT511 2012-02-23
  • 打赏
  • 举报
回复
wininet吧

18,363

社区成员

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

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