这是我的代码:
CIwHTTP http;
std::string output="";
char buffer[1024];
int32 httpCallback(void* sys_data, void* user_data) {
http.ReadData(buffer,http.ContentLength());
output += buffer;
return 0;
}
http.Get(url.c_str(), httpCallback, 0);
在API中正确设置了content-length标头。由于某种原因,只接收到部分API输出。有时它获取整个API字符串,有时它返回字符串的不同部分。这似乎是随机的。救命!
答案 0 :(得分:0)
您正在将ContentLength()
传递给ReadData
,但您的缓冲区只有1024个字节。很可能你有堆栈溢出 - 双关语。
您可以在1024循环中调用ReadData,直到它返回零,或者在堆上动态分配buffer
。
答案 1 :(得分:0)
IwHTTP::Get()
仅在收到回复标题后才执行回调。
然后,您需要使用IwHTTP::ReadContent()
实际读取一系列回调中的其余响应,如其他一条评论中所示。
有关详细信息,请参阅我们的API参考文档中的 IwHTTP Example 。
希望这有帮助!