VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1256|回复: 4

[求助] post获取返回信息不成功?

[复制链接]
92_avatar_middle
online_vip 发表于 2016-1-9 17:57:37 | 显示全部楼层 |阅读模式
用winhttp发送POST到PHP页面,但返回信息总是提示为空。附代码(vs2013):
  1. void CwinhttpTestDlg::OnBnClickedOk()
  2. {
  3.         DWORD dwSize = 0;
  4.         DWORD dwDownloaded = 0;
  5.         CString receiveData = L"";
  6.         HINTERNET  hSession = NULL,        hConnect = NULL,hRequest = NULL;
  7.         BOOL  bResults = FALSE;
  8.         hSession = WinHttpOpen(L"User-Agent", WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0);
  9.         if (hSession)
  10.         {
  11.                 hConnect = WinHttpConnect(hSession, L"127.0.0.1", (INTERNET_PORT)8088, 0);
  12.         }
  13.         if (hConnect)
  14.         {
  15.                 hRequest = WinHttpOpenRequest(hConnect, L"POST", L"/index.php", L"HTTP/1.1", WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, 0);
  16.         }
  17.         LPCWSTR header = L"Content-type: application/x-www-form-urlencoded/r/n";
  18.         SIZE_T len = lstrlenW(header);
  19.         WinHttpAddRequestHeaders(hRequest, header, DWORD(len), WINHTTP_ADDREQ_FLAG_ADD);
  20.         if (hRequest)
  21.         {
  22.                 CString postData =L"postData=slj";
  23.                 bResults = WinHttpSendRequest(hRequest, 0, 0,(LPVOID)(LPCTSTR)receiveData,postData.GetLength(),postData.GetLength(),0);
  24.         }
  25.         if (bResults)
  26.         {
  27.                 bResults = WinHttpReceiveResponse(hRequest, NULL);
  28.         }
  29.         if (bResults)
  30.         {
  31.                 do
  32.                 {
  33.                         dwSize = 0;
  34.                         if (!WinHttpQueryDataAvailable(hRequest, &dwSize))
  35.                         {
  36.                                 MessageBox(L"GetReceive Error");
  37.                                 return;
  38.                         }
  39.                         if (!dwSize)
  40.                                 return;
  41.                         if (!WinHttpReadData(hRequest, (LPVOID)(LPCTSTR)receiveData, dwSize, &dwDownloaded))
  42.                         {
  43.                                 MessageBox(L"WinHttp ReadData Error");
  44.                                 return;
  45.                         }
  46.                         else
  47.                         {
  48.                                 MessageBox(receiveData);
  49.                         }
  50.                         if (!dwDownloaded)
  51.                                 return;
  52.                 } while (dwSize > 0);
  53.         }
  54.         if (hRequest) WinHttpCloseHandle(hRequest);
  55.         if (hConnect) WinHttpCloseHandle(hConnect);
  56.         if (hSession) WinHttpCloseHandle(hSession);
  57. }
复制代码

php文件代码:
  1. <?php
  2. error_reporting(E_ALL&~E_NOTICE);
  3. header("Content-type:text/html;charset=utf-8");
  4. $conn=mysqli_connect("localhost","ccc","ccc","jinyong") or die("connect error");
  5. $postData=$_POST['postData'];
  6. if($postData=="")
  7. {
  8.         echo "no data";
  9.         exit;
  10. }
  11. else
  12. {
  13.         echo $postData;
  14. }
  15. ?>
复制代码




上一篇:【求助】开源谷歌浏览器的问题
下一篇:懂电脑多开的朋友进
51_avatar_middle
online_admins 发表于 2016-1-9 18:01:39 | 显示全部楼层
用 fiddler 抓包看下,你提交的信息和浏览器提交的信息有什么不同?除了可变参数之外,其他的是不是跟浏览器一样呢?
34_avatar_middle
online_vip 发表于 2016-1-9 18:26:01 | 显示全部楼层
我觉得你还是先抓包看看,到底发的和你预想的是不是一样的。
92_avatar_middle
ico_lz  楼主| 发表于 2016-1-9 21:46:26 | 显示全部楼层
呃,我试一下先。
92_avatar_middle
ico_lz  楼主| 发表于 2016-1-10 17:20:01 | 显示全部楼层
自问自答吧。由于VS2013使用的是Unicode编码,而PHP页面用的是UTF-8,因此发送数据和接收数据都要进行编码处理。修改方式如下:
1.将CString postData =L"postData=slj";改为char* postData="postData=slj";
2.接收的数据需要将UTF-8转为Unicode
3.一定要在数据包头中加上charset=utf-8.即: LPCWSTR header = L"Content-type: application/x-www-form-urlencoded/r/n";改为 LPCWSTR header = L"Content-type: application/x-www-form-urlencoded;charset=utf-8/r/n";
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-5-23 22:14

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表