HTTP请求的响应无法从字符串转换为JSON
这是http.request的函数,如下所示:HTTP请求的响应无法从字符串转换为JSON,json,http,Json,Http,这是http.request的函数,如下所示: var post_req =http.request(options,function(res){ console.log('STATUS:'+res.statusCode); console.log('HEADERS: '+JSON.stringify(res.headers)); var str =''; res.setEncoding('utf8'); res.on('data',function (c
var post_req =http.request(options,function(res){
console.log('STATUS:'+res.statusCode);
console.log('HEADERS: '+JSON.stringify(res.headers));
var str ='';
res.setEncoding('utf8');
res.on('data',function (chunk){
str += chunk;
});
res.on('end',function(){
console.log("message="+str);
});
res.on('error',function(e){
});
var token= JSON.parse(str);
console.log(token);
这是我从控制台得到的错误,有人能告诉我我的代码出了什么问题吗
undefined:0
^
SyntaxError: Unexpected end of input
at Object.parse (native)
at ClientRequest.<anonymous> (/Users/guojiaqi/Documents/workspace/ejs/APIintegration.js:27:18)
at ClientRequest.g (events.js:180:16)
at ClientRequest.emit (events.js:95:17)
at HTTPParser.parserOnIncomingClient [as onIncoming] (http.js:1692:21)
at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:121:23)
at CleartextStream.socketOnData [as ondata] (http.js:1587:20)
at CleartextStream.read [as _read] (tls.js:513:12)
at CleartextStream.Readable.read (_stream_readable.js:340:10)
at EncryptedStream.write [as _write] (tls.js:368:25)
未定义:0
^
SyntaxError:输入意外结束
at Object.parse(本机)
在ClientRequest。(/Users/guojiaqi/Documents/workspace/ejs/apintegration.js:27:18)
在ClientRequest.g(events.js:180:16)
在ClientRequest.emit(events.js:95:17)
在HTTPParser.parserOnIncomingClient[作为onIncoming](http.js:1692:21)
在HTTPParser.parserOnHeadersComplete[作为onHeadersComplete](http.js:121:23)
在CleartextStream.socketOnData[as ondata](http.js:1587:20)
在CleartextStream.read[as_read](tls.js:513:12)
在CleartextStream.Readable.read(_stream_Readable.js:340:10)
在EncryptedStream.write[as_write](tls.js:368:25)
您的str
变量为空,因为您正在使用事件处理程序从网络流读取数据,但在开始使用str
执行操作时,您没有等待这些处理程序完成。将JSON.parse(str)
移动到res.on('end',…)
的内部,以便在下载完成后可以解析JSON。str变量是否为空?看起来您正在使用事件处理程序从网络流读取数据,但在使用JSON.parse()
时,您不会等待这些处理程序完成。也许将JSON.parse(str)
移动到res.on('end',…)
。谢谢,我稍后再试on@Pluto谢谢,伙计,成功了,请回答这个问题,这样我就可以给你支票了。