리그 오브 레전드 API를 사용하고 있습니다.JSON 응답이 여러 cURL 콜백으로 분할되었습니다.
나는 며칠 동안 문제를 겪었으므로 지금 진행중인 작업을 간소화했습니다. 나는 CURL을 통해 URL을 보내고 있는데, 이는 Json 블록을 반환해야합니다. URL이 내 브라우저에서 제대로 열리고 예상 데이터가 표시됩니다. 그러나 몇 가지 이상한 이유로, cURL (또는 API?) 콜백 함수에 데이터를 여러 번 보내고 있습니다. 반환 무엇
몇 조각 :
시작과 함께 - { "20278403"- ":"Karthus의 오버로드 ": [{"이름 "이름"{팝 ...
과 함께 종료 " ., TI "TI는
그대로 밖으로 잘라"새로운 콜백은 이전 데이터에 계속 시작 :
시작과 함께 - 어 ":"... 가야 ","PLATINUM
끝으로 - "isInact ive ": false}]}]}
두 번째 콜백 출력과 함께 Json에 대한 올바른 종료가 있습니다. 제안은 '모든 문자열을 하나의 문자열로 엮어서 구문 분석하지 않는 이유는 무엇입니까?'라는 것을 알고 있습니다. - 한 번에 여러 명의 플레이어에게만 데이터를 요청할 수 있기 때문에 몇 가지 요청을 보냅니다. 그래서 한 요청의 Json이 시작하고 다른 끝이 끝나는 곳을 말하는 것은 어렵습니다!
가장 중요한 것은 - 왜 이런 일이 일어나는 지 아는 사람이 있습니까? 여러 콜백에 걸쳐 데이터를 반환하는 것은 매우 기괴한 것 같습니다.
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);
}
감사합니다 : 그것은 .. 그냥 일반적인 컬 호출을하는 데 도움이 경우
.