zoukankan      html  css  js  c++  java
  • http请求,服务器回复内容为乱码的一种可能解决方法

    使用Fiddler监控手机的网络流量,照抄某一软件的http请求(header和body完全相同),使用nodejs的request发出同样的请求,本来期待获得和Fiddler中看到的一样的JSON数据.

    但却获得了一堆乱码:

    使用gedit打开,尝试各种编码方式,都是乱码。

    使用decrypt.js尝试解码,报错为:Malformed UTF-8 data。

    打印response header后,发现其中'transfer-encoding': 'chunked'这一项在fiddler中并没有

    https://imququ.com/post/transfer-encoding-header-in-http.html

    在这篇transfer-encoding的科普文的最后,发现和gzip有关系。

    最后在这里找到了解决方案(https://stackoverflow.com/questions/12148948/how-do-i-ungzip-decompress-a-nodejs-requests-module-gzip-response-body)

    在header中设置了encoding: null,并把原来header中的 Accept-Encoding 和 Content-Length 删除之后,再也没有出现过乱码的情况。


    另外,如果做了以上修改后,发现服务器对某个node的http请求回复一个404的html,但在Fiddler中可以看到正常JSON数据的话,可以尝试把header中的 Content-Length 删除。这种情况可能是因为实际需要回复给你的数据太大,但你的请求头中的Content-Length过小,对于未知数据大小的回复,最好尝试把请求头中的这项删除。

  • 相关阅读:
    centos开机自启
    yum离线安装
    centos6开机自启
    centos下压缩文件夹
    解析xml的工具类 * 1、将多层级xml解析为Map * 2、将多层级xml解析为Json
    获取当前时间近12个月的集合
    使用cmd导出mysql数据到excel
    冒泡排序,桶排序,快速排序
    项目遇到的管理问题
    poi导出excel,表头数据动态拼装
  • 原文地址:https://www.cnblogs.com/mrlonely2018/p/12889705.html
Copyright © 2011-2022 走看看