HttpReceiveRequestEntityBody 使用应注意的地方
如果EntityBody数据很大,调用此函数是不能完全接收全部数据的,我们不能简单的判断
1: BYTE* pBuffer = new BYTE[4096];
2: ZeroMemory(pBuffer, 4096);
3: string entityData;
4: DWORD dwReceived = 0;
5: if((NO_ERROR == HttpReceiveRequestEntityBody(reqQueueHandle, requestId, 0, pBuffer, 4096, &dwReceived, NULL)) && dwReceived > 0) {
6: entityData += pBuffer;
7: }
8: delete[] pBuffer;
就认为已经接受了全部的数据,根据PlatformSDK的注释:
Remarks To retrieve an entire entity body, an application is expected to call HttpReceiveRequestEntityBody, passing in new buffers, until the function returns ERROR_HANDLE_EOF. As long as a buffer full of entity-body data is copied successfully and there is still more entity-body data waiting to be retrieved, the function returns NO_ERROR.
我们应该这样做
1: BYTE* pBuffer = new BYTE[4096];
2: ZeroMemory(pBuffer, 4096);
3: string entityData;
4: DWORD dwReceived = 0;
5: while((ERROR_HANDLE_EOF != HttpReceiveRequestEntityBody(reqQueueHandle, requestId, 0, pBuffer, 4096, &dwReceived, NULL)) && (dwReceived > 0)) {
6: entityData += pBuffer;
7: ZeroMemory(pBuffer, 4096);
8: }
9: delete[] pBuffer;
HttpReceiveRequestEntityBody 使用应注意的地方的更多相关文章
- WTL中菜单栏及工具栏项状态改变应注意的地方
WTL中菜单栏项和工具栏按钮的状态可通过UISetCheck(int ITEM_ID, int STATE)进行设置 需要注意的是要将需要改变状态的控件ID添加到UI更新映射中 /* MainFram ...
- QT程序在发布的时候应注意的地方
---恢复内容开始--- 我们用QT开发好的应用程序,如果要发布到其他计算机上运行怎么办呢?我们在用VC编程时,单独运行编译好的可执行文件时,经常会发现提示缺少动态库.用QT编程也不例外,在一定程度上 ...
- android官方下拉刷新控件SwipeRefreshLayout的使用
可能开发安卓的人大多数都用过很多下拉刷新的开源组件,但是今天用了官方v4支持包的SwipeRefreshLayout觉得效果也蛮不错的,特拿出来分享. 简介:SwipeRefreshLayout组件只 ...
- getRequestDispatcher()与sendRedirect()的区别
1.request.getRequestDispatcher()是请求转发,前后页面共享一个request ; response.sendRedirect()是重新定向,前后页面不是一个request ...
- Android Material Design 兼容库的使用
Android Material Design 兼容库的使用 mecury 前言:近来学习了Android Material Design 兼容库,为了把这个弄懂,才有了这篇博客,这里先推荐两篇博客: ...
- JMS与MQ详解(有项目)
<一>m2mGW项目 1.ActiveMQ概述 企业消息软件从80年代起就存在,它不只是一种应用间消息传递风格,也是一种集成风格.因此,消息传递可以满足应用间的通知和互相操作.但是 ...
- android 数据存储Ⅱ
本章继续讲解在Android开发中,数据的存储与管理.涉及知识点:SQLite,SwipeRefreshLayout控件刷新. 1.功能需求 练习使用SQLite 做一个登录界面,数据库字段包含用户名 ...
- 总结的js性能优化方面的小知识
前言 一直在学习javascript,也有看过<犀利开发Jquery内核详解与实践>,对这本书的评价只有两个字犀利,可能是对javascript理解的还不够透彻异或是自己太笨,更多的是自己 ...
- 我总结的js性能优化的小知识
前言 一直在学习javascript,也有看过<犀利开发Jquery内核详解与实践>,对这本书的评价只有两个字犀利,可能是对javascript理解的还不够透彻异或是自己太笨,更多的是自己 ...
随机推荐
- C++内存池
内存池是一种内存分配方式.通常我们习惯直接使用new.malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片.并由于频繁的分配和回收内存会降低 ...
- WPF Application
Application类作为启动的入口,在VS中,通常自动代码为我们继承了Application类,这样做的有点,我还没有理解到,但是我们先学到这个知识点. 为了能够更好的控制整个启动过程,包括得到A ...
- 微信小程序使用场景及取名“潜”规则
微信小程序使用场景举例: 1.查看公交 2.登记.选座 3.订票 4.K歌.叫代驾 5.快递查询 6.查看天气 7.医院挂号.拿药.缴费 8.加油充电 9.政务服务 微信公众号“数据三观”认为,小程序 ...
- Python中enumerate()的使用方法
enumerate 函数用于遍历序列中的元素以及它们的下标: >>> for i,j in enumerate(('a','b','c')): print i,j 0 a1 b2 c ...
- FD.io VPP 技术Neutron VNF vRouter 实现
在OpenStack Neutron中主要有三种网络设备,路由器(Router),负载均衡器(LB)以及VPN,其中Router作为基础网络设备起到连接子网到子网.内网到外网的作用.不同子网之间的访问 ...
- ionic中$ionicPopover和$ionicModal
Popover可点多个按钮弹出同一个浮动框但内容不一样.那想要在同一页面弹出不同的浮动框怎么办呢? 这事就用到了$ionicModal,他和$ionicPopover一样的用法. 请看图: html: ...
- JavaScript 属性类型(数据属性 访问器属性)
ECMA-2把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数.” 严格来说,这就相当于说对象是一组没有特定顺序的值.对象的属性或方法都有一个名字,而每个名字映射到一个值.我们可以把E ...
- javascript初始笔记
1.在html中使用点击事件: <button type="button" onclick="myclick()">click me<butt ...
- ansible尝试
1.下载软件 http://releases.ansible.com/ansible/ 2.软件安装 [root@Yangjian-VM02-241 ansible-stable-2.0.0.1]# ...
- LogFactory缺包异常
抛出异常: Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/loggin ...