玩弄英雄联盟 API。
我已经有几天的问题了,所以我简化了正在发生的事情。我正在通过 cURL 发送一个 URL,它应该返回一个 Json 块。该 URL 在我的浏览器中可以正常打开并显示预期的数据。但是由于某些奇怪的原因,cURL(或 API?)多次向我的回调函数发送数据。
返回的一些片段:
以 - {"20278403":[{"name":"Pop...
以 - {"name":"Karthus's Overlords","ti 结尾
字面意思是“ti”。然后开始一个新的回调,继续使用旧数据:
以 - er":"PLATINUM","que... 开头
以 - "isInactive":false}]}]} 结尾
您可能会注意到,Json 的正确终止出现在第二个回调的输出中。我知道这个建议是“为什么不把它全部塞进一个字符串然后解析它?” - 问题是我需要发送几个请求,因为您一次只能请求 X 多个玩家数据。所以很难分辨一个请求的 Json 从哪里开始,另一个在哪里结束!
最重要的是 - 有人知道为什么会这样吗?跨多个回调返回数据似乎非常奇怪。
如果它有帮助.. 只是一个通用的 cURL 调用:
curl_easy_setopt(m_pCurl, CURLOPT_URL, "https://euw...")
curl_easy_setopt(m_pCurl, CURLOPT_WRITEFUNCTION, &DataSuccessCB);
curl_easy_perform(m_pCurl);
size_t CAPIReader::DataSuccessCB(char* cBuffer, size_t iSize, size_t nmemb, void* userData)
{
string sBuffer = string(cBuffer);
vStrVec.push_back(sBuffer); // vector holding all the returned json strings - intended to have a whole block of json in each one!
return (iSize * nmemb);
}
谢谢。