相关疑难解决方法(0)

我如何ungzip(解压缩)NodeJS请求的模块gzip响应体?

如何在请求的模块响应中解压缩gzipped主体?

我在网上尝试了几个例子,但似乎都没有.

request(url, function(err, response, body) {
    if(err) {
        handleError(err)
    } else {
        if(response.headers['content-encoding'] == 'gzip') {    
            // How can I unzip the gzipped string body variable?
            // For instance, this url:
            // http://highsnobiety.com/2012/08/25/norse-projects-fall-2012-lookbook/
            // Throws error:
            // { [Error: incorrect header check] errno: -3, code: 'Z_DATA_ERROR' }
            // Yet, browser displays page fine and debugger shows its gzipped
            // And unzipped by browser fine...
            if(response.headers['content-encoding'] && response.headers['content-encoding'].toLowerCase().indexOf('gzip') > -1) {   
                var body = response.body;                    
                zlib.gunzip(response.body, function(error, data) {
                    if(!error) …
Run Code Online (Sandbox Code Playgroud)

javascript zlib node.js express

63
推荐指数
6
解决办法
6万
查看次数

从StackOverflow API请求JSON的编码问题

我无法想象我的生活.下面是请求模块的实现,但我也尝试使用node-XMLHttpRequest模块无济于事.

var request = require('request');

var url = 'http://api.stackexchange.com/2.1/questions?pagesize=100&fromdate=1356998400&todate=1359676800&order=desc&min=0&sort=votes&tagged=javascript&site=stackoverflow';

request.get({ url: url }, function(error, response, body) {
    if (error || response.statusCode !== 200) {
        console.log('There was a problem with the request');
        return;
    }

    console.log(body); // outputs gibberish characters like ?
    console.log(body.toString()); // also outputs gibberish
});
Run Code Online (Sandbox Code Playgroud)

似乎是一个编码问题,但我在浏览器中使用了完全相同的代码(使用本机XHR对象),它没有问题.我究竟做错了什么?

compression gzip node.js stackexchange-api

6
推荐指数
2
解决办法
767
查看次数

垃圾JSON响应 - 节点请求

我正在尝试使用Node&Request解析JSON响应.JSON响应来自Apple,所以我认为它是完全有效的JSON.此外,如果我使用Chrome上的Post Master发送请求,则原始响应似乎完全有效.我甚至使用burp套件来接收原始字节响应 - 如果响应中有一个错误的字节 - 再次,一切似乎都很好.

但是,以下代码为每个日志语句打印出完整的垃圾(我已在多台计算机上尝试过此操作,并且使用不同版本的Node和Request无效):

request(postOptions, function(error, response, body) {
    if (!error && response.statusCode == 200) {

            console.log(body);
            console.log(body.toString());
            console.log(JSON.parse(body));

    }               
});
Run Code Online (Sandbox Code Playgroud)

在哪里postOptions:

var postOptions = {
    url: '_THE_VALID_URL_',
    followAllRedirects: true,
    method: 'POST',
    body: '_THE_VALID_BODY_',
    headers: {

        'Connection': 'keep-alive',
        'Cache-Control': 'no-cache',
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36',
        'Accept': '*/*',
        'Accept-Encoding': 'gzip, deflate',
        'Accept-Language': 'en-US,en;q=0.8,pt;q=0.6',

    }
}
Run Code Online (Sandbox Code Playgroud)

我已确保所有参数与我使用Post Master发出POST请求时使用的参数相同.

打印的内容如下:

R n1 k - V …

json request node.js

4
推荐指数
1
解决办法
815
查看次数

对 stackexchange api 的 Http 请求返回不可读的 json

我正在尝试从 stackexchange api 获取一些 json 数据。接收 OAuth 代码和访问令牌工作正常。但是当调用实际的数据获取端点时,响应看起来确实很奇怪。可能是编码或类似的。

\n\n

该请求如下所示:

\n\n
var client = requestjson.newClient(\'https://api.stackexchange.com\');\n    client.get("/2.2/me/comments?order=desc&sort=creation&site=stackoverflow&access_token="+myToken+"&key="+key, function(err, res, body) {\n        console.log(body);\n    })\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后响应正文如下所示:

\n\n
i\xef\xbf\xbd)\xef\xbf\xbd)QEJ\xef\xbf\xbda\xef\xbf\xbd\xef\xbf\xbdMl\xef\xbf\xbdd4\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd20\xef\xbf\xbdc\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdM\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd]\xef\xbf\xbdv5/AZ\xef\xbf\xbdm\xef\xbf\xbd\xef\xbf\xbdz    \xef\xbf\xbdC\xef\xbf\xbd\xef\xbf\xbd`\xef\xbf\xbd~\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd*\xcd\xb3`Fh\'\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd<M\xef\xbf\xbd\xef\xbf\xbdk\xef\xbf\xbd\xef\xbf\xbdJ\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdJ\xef\xbf\xbd\xef\xbf\xbd>       &\xef\xbf\xbd\xef\xbf\xbd\xc8\x97\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdm\xef\xbf\xbd\xef\xbf\xbdo>U\xef\xbf\xbdn\xef\xbf\xbd\xe9\xb4\xac\xef\xbf\xbdx=M\xef\xbf\xbd\xef\xbf\xbd}1\xef\xbf\xbd\xef\xbf\xbdm\xef\xbf\xbd\xef\xbf\xbd\'\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xcf\xbb\xef\xbf\xbd\xef\xbf\xbd#\n\xef\xbf\xbd\xef\xbf\xbdzDn\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdn=\xcf\xb3h[\xef\xbf\xbd\xef\xbf\xbdQY\xef\xbf\xbd\xef\xbf\xbdM\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbduv\xef\xbf\xbd*\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd&?;\xef\xbf\xbd\xef\xbf\xbdS\xef\xbf\xbd\xef\xbf\xbd\xd1\x85\xef\xbf\xbdV\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\'{mJ?  \xef\xbf\xbd8/\xef\xbf\xbdW\xef\xbf\xbdq\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xcd\x93\xef\xbf\xbd\xef\xbf\xbd+\xef\xbf\xbd\xef\xbf\xbdqK\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdX\xef\xbf\xbd9X~\xef\xbf\xbd\xef\xbf\xbdg\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xce\x81YrVY\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdB\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdX1#\xef\xbf\xbd`E\n
Run Code Online (Sandbox Code Playgroud)\n\n

我已经尝试过JSON.parse,但它在控制台中抛出错误。

\n

javascript json http node.js stackexchange-api

3
推荐指数
1
解决办法
1531
查看次数

使用Express启用HTTP压缩

我搞砸了Darksky API,并在其中一个查询参数下指出:

延长=每小时可选

如果存在,则返回接下来的168小时(而不是接下来的48小时)的每小时数据。强烈建议您启用HTTP压缩。

我使用Express作为命中Darksky api的节点代理(即localhost:3000 / api / forecast / LATITUDE,LONGITUDE)。

“ HTTP压缩”是什么意思,我将如何启用它?

javascript node.js express

2
推荐指数
1
解决办法
3020
查看次数