博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HttpReceiveRequestEntityBody 使用应注意的地方
阅读量:5070 次
发布时间:2019-06-12

本文共 1131 字,大约阅读时间需要 3 分钟。

如果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;

转载于:https://www.cnblogs.com/mforestlaw/p/3289389.html

你可能感兴趣的文章
第十二周学习报告
查看>>
ConcurrentHashMap源码阅读
查看>>
AspNet MVC中各种上下文理解
查看>>
素数筛 codevs 1675 大质数 2
查看>>
Python小程序—修改haproxy配置文件
查看>>
mybatis foreach 循环 list(map)
查看>>
日期选择器-----tablesorter
查看>>
Android-MediaProvider数据库模式
查看>>
淘宝的公共样式
查看>>
FLASH 和EEPROM区别
查看>>
第七章
查看>>
C++输入密码不显示明文
查看>>
Exp2:后门原理与实践
查看>>
《我最想要的记忆魔法书》笔记
查看>>
HDFS简介
查看>>
bzoj4034: [HAOI2015]树上操作
查看>>
ELK系列(二):.net core中使用ELK
查看>>
flask安装
查看>>
zabbix--监控MySQL性能
查看>>
三极管对管驱动nmos管
查看>>