【问题标题】:mikeal request bad formatted bodymikeal 请求格式错误的正文
【发布时间】:2012-10-26 19:09:29
【问题描述】:

我正在使用 mikeal/request。我在使用某些网页时遇到问题:

var url='http://www.youtube.com/watch?v=YbP1K-bQB6g&list=SP018BE450221B431B';
var request = require('request');
request(url, function (error, response, body) {      
    console.log(body);      
})

这会以 html 格式打印正文。有时使用不同的 url,它会打印如下内容:

ÿÿ´Wmo7þ|ú¦{@ã »ZÉ9ŸãÄ2 ØªOl+¶Ü4W½K­èì’[’+K.úé~ ecc...

但是当我通过浏览器浏览它时,我可以清楚地看到页面。 有什么建议吗?我已经尝试使用 StringDecoder 对其进行解码,但没有...我正在使用此 url 来获取错误:

http://www.agi.it/estero/notizie/201210250805-est-rt10017-performance_stellari_e_10_ore_autonomia_e_gia_ipad_mini_mania

【问题讨论】:

    标签: html node.js zip request


    【解决方案1】:

    响应是 gzip 压缩的,看起来。如果您无法让服务器接受您的请求标头,则需要对响应进行解码。

    编辑: 您可以像这样显式设置请求标头:

    request({ url: <your url>, headers: { 'accept-encoding': 'identity' }}, function (error, reponse, body) {
      // You really should receive an un-encoded body, now
    });
    

    【讨论】:

    • 感谢您的回答,我正在尝试在 nodejs 中使用 zlib:在示例中,他们总是将结果放入流中。我需要解码响应并获取正文然后使用它。如果我尝试 response.pipe(zlib.createGunzip()).pipe(result);以结果为变量;我得到这个错误 stream.js:52 dest.on('drain', ondrain); TypeError:无法调用未定义的“on”方法
    • 如果您的请求未表明您接受它,则服务器不应向您发送压缩响应。因此,您应该向该服务器的管理员报告错误。但更重要的是,您可以设置一个明确的请求标头,表明您无法处理 gzipped 响应。
    猜你喜欢
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 2018-01-01
    相关资源
    最近更新 更多