我正在使用Node JS HTTP请求。当我的回复长度超过16101时,它会截断我的回复。我收到的回复有限:
{"id_user":"133696"},{"id_u
这不是一个分块响应,只有一次。我想收到整个回复而不是截断。
我的节点版本是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);
});
答案 0 :(得分:2)
您的代码只期待data
事件一次,但Node可以多次触发它。事实上,它可以发送它多次,因为它该死的喜欢。:)每次发出data
事件时,会提供另一部分数据。您知道在end
事件被触发时不再需要消耗数据 - 您应该在哪里处理数据和/或调用您的回调。
由于响应基本上是可读流,请查看data
event for Readable Stream。