【发布时间】:2011-11-21 16:19:09
【问题描述】:
同步操作。 GetLastError = 0,WinHttpQueryDataAvailable 本身返回 TRUE(即 OK)但要读取的字节数 = 0
知道这意味着什么吗?它通常工作正常(从相机读取 JPEG 流),但偶尔会卡在这里(提示代码重新连接)。
根据 MSDN,WinHttpQueryDataAvailable 不应该返回:“如果会话是同步的,则请求会等待直到数据可用。”
代码摘录在这里:
g_HSession = WinHttpOpen( L"Jet", WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0 );
ResultsOk = WinHttpSendRequest(
hRequest,
WINHTTP_NO_ADDITIONAL_HEADERS,
0, WINHTTP_NO_REQUEST_DATA, 0,
0, 0);
// End the request.
if (ResultsOk)
{
ResultsOk = WinHttpReceiveResponse( hRequest, NULL );
DWORD BytesToRead = 0;
if (WinHttpQueryDataAvailable( hRequest, &BytesToRead ))
{
if (BytesToRead) // THIS IS SOMETIMES 0 - seems wrong to me
{
if (WinHttpReadData( hRequest, pReadPos, min(BytesToRead, (unsigned)SizeRemaining), &NumRead ))
{
...etc!
【问题讨论】:
-
这可能适用,见备注,第三段。 link