我正在做一个 GET(REST) 并使用 InternetReadFile API 来读取作为 xml 的响应,当响应很小但当响应大于 10kb 时 InternetReadFile 返回数据,其中包含垃圾字符,或者它会截断部分数据. 当我由于垃圾字符的存在或由于缺少某些部分而尝试重建响应时,生成的 xml 将被损坏。
如果我使用 fiddler 进行相同的 GET 调用,那么我会得到正确的响应。
这是代码片段
m_internetsession = InternetOpen("RestToolkit",INTERNET_OPEN_TYPE_PRECONFIG ,NULL,NULL,0);
if(m_internetsession == NULL)
{
throw new exception ("InternetOpen call failed");
}
m_connection = InternetConnect(m_internetsession,m_uri.Gethost().c_str(),(INTERNET_PORT)m_uri.Getport(),"", "", INTERNET_SERVICE_HTTP, 0, 0);
HINTERNET 请求 = HttpOpenRequest(m_connection,m_method.c_str(),m_uri.Getrelativepath().c_str(),NULL,NULL,NULL,0,0);
阅读回复:
#define HTTP_BUFFER_LENGTH 1024
if(response.empty())
{
CHAR szBuff[HTTP_BUFFER_LENGTH+1];
memset(szBuff,0x00,sizeof(szBuff));
DWORD bytesRead;
while (InternetReadFile(request,szBuff, HTTP_BUFFER_LENGTH,&bytesRead) == TRUE && bytesRead > 0)
{
response.append(szBuff);
memset(szBuff,0x00,sizeof(szBuff));
}
}
我究竟做错了什么?
谢谢JeeL