Беседу с API Лиги Легенд.Ответ JSON разделен на несколько обратных вызовов cURL
У меня была проблема на пару дней, поэтому я упростил то, что происходит. Я отправляю URL через cURL, который должен вернуть блок Json. URL-адрес открывается в моем браузере и отображает ожидаемые данные. Однако по какой-то странной причине cURL (или API?) Несколько раз отправляет данные моей функции обратного вызова.
Несколько фрагментов того, что возвращает:
начинается с - { "20278403": [{ "Имя": "Поп ...
концы с - {" имя ":" Оверлордов Karthus в» «ти
Буквально вырезает с„ти новый обратный вызов, то начинается, продолжая со старыми данными:
начинается с - э.“:» PLATINUM «» дие ...
Ends with - "isInact ive ": false}]}]}
Как вы можете заметить, правильное завершение для Json присутствует с выходом второго обратного вызова. Я знаю, что предложение будет «почему бы просто не засунуть все это в одну строку и разобрать его после?» - проблема в том, что мне нужно отправить несколько запросов, поскольку вы можете запросить только X данных игроков за раз. Поэтому трудно сказать, где начинается Json 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);
}
Спасибо.