经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C++ » 查看文章
MFC实现http连接、发送和接收数据
来源:cnblogs  作者:from2019  时间:2019/1/31 9:27:06  对本文有异议
  1. #include <afxinet.h>
  2. // 设置超时
  3. CInternetSession session;
  4. session.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT, 2000);
  5. session.SetOption(INTERNET_OPTION_CONNECT_RETRIES, 3);
  6. session.SetOption(INTERNET_OPTION_SEND_TIMEOUT, 10000);
  7. session.SetOption(INTERNET_OPTION_RECEIVE_TIMEOUT, 20000);
  8. // 打开HTTP连接
  9. CHttpConnection *pHttpConnection = session.GetHttpConnection(strHost, INTERNET_FLAG_KEEP_CONNECTION, iport);
  10. if (NULL == pHttpConnection)
  11. {
  12. return false;
  13. }
  14. // 开启一个HTTP请求
  15. CHttpFile *pHttpFile = pHttpConnection->OpenRequest(_T("POST"), strRequestUrl, NULL, 1, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION);
  16. if (NULL == pHttpFile) {
  17. return false;
  18. }
  19. // 设置HTTP请求包头
  20. pHttpFile->AddRequestHeaders(_T("User-Agent: MYPRODUCT/1.0.0 (Windows)"));
  21. pHttpFile->AddRequestHeaders(_T("Content-Type: application/octet-stream"));
  22. pHttpFile->AddRequestHeaders(_T("Charset: UTF-8"));
  23. // 发送数据
  24. BOOL bResult = pHttpFile->SendRequest(NULL, 0, (LPVOID)output.data(), (DWORD)output.length());
  25. if (!bResult) {
  26. return false;
  27. }
  28. // 查询状态
  29. DWORD dwHttpCode = 0;
  30. bResult = pHttpFile->QueryInfoStatusCode(dwHttpCode);
  31. if (!bResult)
  32. {
  33. return false;
  34. }
  35. // 出错的原因
  36. if ((dwHttpCode < 200) || (dwHttpCode >= 300))
  37. {
  38. BOOL bResult = pHttpFile->QueryInfo(HTTP_QUERY_STATUS_TEXT, szBuffer, &dwBufferSize);
  39. }
  40. // 接收响应
  41. while ((nReadBytes = pHttpFile->Read((void*)szBuffer, 4096)) > 0)
  42. {
  43. buffer.write(szBuffer, nReadBytes);
  44. memset(szBuffer, 0, 4096 * sizeof(char));
  45. }
  46. // 释放资源
  47. if (NULL != pHttpFile) {
  48. pHttpFile->Close();
  49. delete pHttpFile;
  50. pHttpFile = NULL;
  51. }
  52. if (NULL != pHttpConnection) {
  53. pHttpConnection->Close();
  54. delete pHttpConnection;
  55. pHttpConnection = NULL;
  56. }
  57. session.Close();

 以上为伪代码示范过程。 

原文链接:http://www.cnblogs.com/manongdashu/p/10338826.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号