我正在使用 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/

10-16 06:59