#include <afxinet.h>
// 设置超时
CInternetSession session;
session.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT, 2000);
session.SetOption(INTERNET_OPTION_CONNECT_RETRIES, 3);
session.SetOption(INTERNET_OPTION_SEND_TIMEOUT, 10000);
session.SetOption(INTERNET_OPTION_RECEIVE_TIMEOUT, 20000);
// 打开HTTP连接
CHttpConnection *pHttpConnection = session.GetHttpConnection(strHost, INTERNET_FLAG_KEEP_CONNECTION, iport);
if (NULL == pHttpConnection)
{
return false;
}
// 开启一个HTTP请求
CHttpFile *pHttpFile = pHttpConnection->OpenRequest(_T("POST"), strRequestUrl, NULL, 1, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION);
if (NULL == pHttpFile) {
return false;
}
// 设置HTTP请求包头
pHttpFile->AddRequestHeaders(_T("User-Agent: MYPRODUCT/1.0.0 (Windows)"));
pHttpFile->AddRequestHeaders(_T("Content-Type: application/octet-stream"));
pHttpFile->AddRequestHeaders(_T("Charset: UTF-8"));
// 发送数据
BOOL bResult = pHttpFile->SendRequest(NULL, 0, (LPVOID)output.data(), (DWORD)output.length());
if (!bResult) {
return false;
}
// 查询状态
DWORD dwHttpCode = 0;
bResult = pHttpFile->QueryInfoStatusCode(dwHttpCode);
if (!bResult)
{
return false;
}
// 出错的原因
if ((dwHttpCode < 200) || (dwHttpCode >= 300))
{
BOOL bResult = pHttpFile->QueryInfo(HTTP_QUERY_STATUS_TEXT, szBuffer, &dwBufferSize);
}
// 接收响应
while ((nReadBytes = pHttpFile->Read((void*)szBuffer, 4096)) > 0)
{
buffer.write(szBuffer, nReadBytes);
memset(szBuffer, 0, 4096 * sizeof(char));
}
// 释放资源
if (NULL != pHttpFile) {
pHttpFile->Close();
delete pHttpFile;
pHttpFile = NULL;
}
if (NULL != pHttpConnection) {
pHttpConnection->Close();
delete pHttpConnection;
pHttpConnection = NULL;
}
session.Close();

 以上为伪代码示范过程。 

MFC实现http连接、发送和接收数据的更多相关文章

  1. [Socket网络编程]由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。

    原文地址:http://blog.sina.com.cn/s/blog_70bf579801017ylu.html,记录在此方便查看 解决办法: MSDN的说明: Close 方法可关闭远程主机连接, ...

  2. 手把手教你Android手机与BLE终端通信--连接,发送和接收数据

    假设你还没有看上一篇 手把手教你Android手机与BLE终端通信--搜索,你就先看看吧,由于这一篇要接着讲搜索到蓝牙后的连接.和连接后的发送和接收数据. 评论里有非常多人问假设一条信息特别长,怎么不 ...

  3. socket 错误之:OSError: [WinError 10057] 由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。

    出错的代码 #server端 import socket import struct sk=socket.socket() sk.bind(('127.0.0.1',8080)) sk.listen( ...

  4. Netty——高级发送和接收数据handler处理器

    netty发送和接收数据handler处理器 主要是继承 SimpleChannelInboundHandler 和 ChannelInboundHandlerAdapter 一般用netty来发送和 ...

  5. netty发送和接收数据handler处理器

    netty发送和接收数据handler处理器 主要是继承 SimpleChannelInboundHandler 和 ChannelInboundHandlerAdapter 一般用netty来发送和 ...

  6. udp网络程序-发送、接收数据

    1. udp网络程序-发送数据 创建一个基于udp的网络程序流程很简单,具体步骤如下: 创建客户端套接字 发送/接收数据 关闭套接字 代码如下: #coding=utf-8from socket im ...

  7. TCP程序中发送和接收数据

    这里我们来探讨一下在网络编程过程中,有关read/write 或者send/recv的使用细节.这里有关常用的阻塞/非阻塞的解释在网上有很多很好的例子,这里就不说了,还有errno ==EAGAIN ...

  8. 31.用python中的serial向串口发送和接收数据(案例一)

    代码功能说明:1.向串口助手发送十六进制数据:0X01,0X03,0X00,0X00,0X00,0X01,0X84,0X0A: 2.用串口助手向代码发送数据,并将发送过来的数据保存在数据库中,按数据和 ...

  9. UDP 网络程序-发送_接收数据

    """ 创建udp连接 发送数据给 """ from socket import * # 创建udp套接字,使用SOCK_DGRAM udp ...

  10. MPTCP 源码分析(四) 发送和接收数据

    简述:      MPTCP在发送数据方面和TCP的区别是可以从多条路径中选择一条 路径来发送数据.MPTCP在接收数据方面与TCP的区别是子路径对无序包 进行重排后,MPTCP的mpcb需要多所有子 ...

随机推荐

  1. 【Leetcode】【Medium】Path Sum II

    Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given su ...

  2. mysqldump导出sql文件中insert多行问题

    mysqldump为了加快导入导出,默认把数据都缩减在一行里面. 查看和修改不方便,为此,我们可以使用--skip-extended-insert选项来使导出的数据,是多行插入形式的. mysqldu ...

  3. June 18th 2017 Week 25th Sunday

    Life was like a box of chocolates, you never know what you're gonna get. 人生就像一盒巧克力,结果往往出人意料. Compare ...

  4. 名词后变为复数+s,或者+es等怎么读

    , 以ce,se,ze, (d)ge等结尾的词 加 -s 读 /iz/ license-licenses, office offices 最佳答案1: 当名词后加-e(-es)变成复数,动词单数第三人 ...

  5. PHP5.5的新特性

    看了@轩脉刃 今天出炉的PHP 5.5 新特性.不过没有翻译全,我这里稍微补充下,整理成完整的一篇:) 原文:http://www.php.net/manual/zh/migration55.new- ...

  6. js递归错误

    错误信息:Uncaught RangeError: Maximum call stack size exceeded 问题代码: js代码:$(function(){        selectTog ...

  7. building for production...Killed

    npm run build报错 building for production...Killed 原理 按照他人的说法是,服务器内存不够用了,这样就给他配置一个单独的内存出来就解决了 解决方法 sud ...

  8. 二十四、详述 IntelliJ IDEA 中自动生成 serialVersionUID 的方法

    当我们用 IntelliJ IDEA 编写类并实现 Serializable(序列化)接口的时候,可能会遇到这样一个问题,那就是: 无法自动生成serialVersionUID. 而serialVer ...

  9. 【转载】对C#DateTime的一些扩展,计算周内第一天,最后一天

    /// <summary> /// DateTime的一些扩展 /// </summary> public class DateTime2 { /// <summary& ...

  10. ASP.NET教程

    1.ASP.NET是一个使用Html Css JavaScript和服务器脚本创建网页和网站的开发框架 2.ASP.NET支持三种开发模式:WebPages(Web页面).MVC(Model View ...