C++ winhttp

bljswpu 2014-12-26 11:51:34
现在我通过浏览器想服务器post数据 服务器受到 数据后 有返回给浏览器

HTTP_RESPONSE response;
DWORD result;
DWORD bytesSent;
PUCHAR pEntityBuffer;
ULONG EntityBufferLength;
ULONG BytesRead;
ULONG TempFileBytesWritten;
HANDLE hTempFile;
TCHAR szTempName[MAX_PATH + 1];
CHAR szContentLength[MAX_ULONG_STR];
HTTP_DATA_CHUNK dataChunk;
ULONG TotalBytesRead = 0;
ULONG pSend = 0;

EntityBufferLength = 2048;
pEntityBuffer = (PUCHAR) ALLOC_MEM( EntityBufferLength );
memset(pEntityBuffer, 0, EntityBufferLength);

INITIALIZE_HTTP_RESPONSE(&response, 200, "OK");
ADD_KNOWN_HEADER(response, HttpHeaderContentType, "text/html");

sprintf_s(szContentLength, MAX_ULONG_STR, "%lu", TotalBytesRead);

ADD_KNOWN_HEADER(
response,
HttpHeaderContentLength,
szContentLength
);

response.pEntityChunks = 0;
response.EntityChunkCount = 0;
result =
HttpSendHttpResponse(
hReqQueue, // ReqQueueHandle
pRequest->RequestId, // Request ID
HTTP_SEND_RESPONSE_FLAG_MORE_DATA,
&response, // HTTP response
NULL, // pReserved1
&bytesSent, // bytes sent-optional
NULL, // pReserved2
0, // Reserved3
NULL, // LPOVERLAPPED
NULL // pReserved4
);

if(result != NO_ERROR)
{
wprintf(
L"HttpSendHttpResponse failed with %lu \n",
result
);
goto Done;
}

dataChunk.DataChunkType = HttpDataChunkFromMemory;
dataChunk.FromMemory.pBuffer = "\r\n0\r\n";
dataChunk.FromMemory.BufferLength = 5;
result = HttpSendResponseEntityBody(
hReqQueue,
pRequest->RequestId,
0, // 0 This is the last send.
1, // Entity Chunk Count.
&dataChunk,
&pSend,
NULL,
0,
NULL,
NULL
);

if(result != NO_ERROR)
{
wprintf(
L"HttpSendResponseEntityBody failed %lu\n",
result
);
}

goto Done;

break;


但是返回数据给浏览器后 浏览器没有数据显示出来
<html><body><script type="text/javascript">
var request = new XMLHttpRequest();
alert("sss");
request.open('POST', 'http://127.0.0.1:80/test', false);
alert('Welcome to\ndreamdu!');
request.send("hello");
if (200 == request.status) {
alert (request.responseText);
}
alert("Hello dreamdu!");
alert (request.status);
</script></body></html>
这是前端的代码 刚开始接触winhttp 就大神请教
...全文
160 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
野男孩 2014-12-27
  • 打赏
  • 举报
回复
网络类的应用开发,不会抓包看数据是不行的。下载个wireshark工具看下实际数据流吧。 用的127.0.0.1, 应该是c/s都在本机,loopback的抓包麻烦点,看下这个http://wiki.wireshark.org/CaptureSetup/Loopback

64,676

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧