https GET 요청에서 불완전한 JSON을받는 Riot-Api Im 호출.Node.js에서 불완전한 JSON 응답 https-module
디버깅 후, 실제로 완료 JSON 객체를 수신하는 https on'data '콜백 임을 미리 실행 (중단 점) 할 때까지 기다리는 것에 따라 깨달았습니다.
let getOptions = function(url) {
return {
host: 'na.api.pvp.net',
port: 443,
path: `${url}?api_key=${apiKey}`,
method: 'GET'
};
}
exports.Call = function(url, callback) {
let response = {};
let req = https.request(getOptions(url), function(res) {
response.statusCode = res.statusCode;
res.on('data', function(data) {
response.json = JSON.parse(data);
callback(response);
});
});
req.on('error', function(err) {
response.err = err;
callback(response);
});
req.end();
};
중단하지 않고 코드를 실행하거나 나만 오류로 중 하나를 실행 짧은 시간 위반 (나를 위해 평균 API 응답 시간은 200-300ms가) :
JSON.parse(data): Unexpected Token in JSON at position ...
또는
JSON.parse(data): Unexptected end of JSON Input.
요청이 완료된 후에 만 '데이터'콜백이 실행되기를 기대합니다. abo를 혼동합니다. 그것을 (인위적으로 지연시키지 않고) 고치는 방법.
같은 도우미 라이브러리를 사용하는 recomment 것이다 어쩌면 응답이 이미 JSON 형식을 가지고 있으며, 그것을 분석 할 필요가 없다? 데이터의'JSON.parse'를 제거하려고 시도하십시오. – Edgar
@Edgar 원시 버퍼를 다시 얻습니다. 그리고 때때로 JSON으로 포맷하는 데 성공합니다. –