我正在使用 Node JS HTTP 请求。当我的响应长度超过 16101 时,它会 chop 我的响应。我收到这样的有限回应:
{"id_user":"133696"},{"id_u
这不是一个分块的响应,它只出现一次。我想收到整个响应而不是 truncated 。
我的 Node 版本是 v0.10.36。
这是我的代码:
var https = require('https');
var querystring = require('querystring');
postData.format = 'json';
postData.apikey = 'abcd';
jsonObject = querystring.stringify(postData);
var postheaders = {
'Content-Type' : 'application/x-www-form-urlencoded',
'Content-Length' : Buffer.byteLength(jsonObject, 'utf8')
};
if(callMethod == undefined){
callMethod = 'POST';
}
var optionspost = {
host : this.host,
port : this.port,
path : this.path,
method : callMethod,
headers : postheaders
};
var reqPost = https.request(optionspost, function(res) {
res.setEncoding('utf-8');
res.on('data', function(responseData) {
//---->>> responseData containes truncated response
if(callFunction != undefined && callFunction != null && callFunction != ''){
callFunction(responseData, relatedData);//****** calling success function ****
}
});
res.on('end', function() {
});
});
reqPost.write(jsonObject);
reqPost.end();
reqPost.on('error', function(e) {
console.error(e);
});
最佳答案
您的代码只需要一次 data
事件,但 Node 可以多次触发它。事实上,它可以随心所欲地多次触发它。:) 每次发出 data
事件时,都会向您提供另一部分数据。您知道当 end
事件被触发时没有更多的数据需要消耗 - 这就是您应该处理数据和/或调用回调的地方。
由于响应基本上是可读流,请查看 data
event for Readable Stream 。
关于javascript - 当响应长度超过 16101 时,Node Js HTTP 响应崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30709575/