Marmalade HTTP GET没有收到完整的回复

时间:2015-03-20 18:18:47

标签: http marmalade

这是我的代码:

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字符串,有时它返回字符串的不同部分。这似乎是随机的。救命!

2 个答案:

答案 0 :(得分:0)

您正在将ContentLength()传递给ReadData,但您的缓冲区只有1024个字节。很可能你有堆栈溢出 - 双关语。

您可以在1024循环中调用ReadData,直到它返回零,或者在堆上动态分配buffer

答案 1 :(得分:0)

IwHTTP::Get()仅在收到回复标题后才执行回调。

然后,您需要使用IwHTTP::ReadContent()实际读取一系列回调中的其余响应,如其他一条评论中所示。

有关详细信息,请参阅我们的API参考文档中的 IwHTTP Example

希望这有帮助!