这两天在写一个打卡脚本,需要对打卡后服务端响应进行解析以便调试。
四月又来了……
头图来源:四月是你的谎言
服务端返回的响应体是json格式,解析的时候却报错了,报错信息如下:
invalid character '\x1f' looking for beginning of value
这里的x1f是个转义字符。这报错信息咋一看有些摸不着头脑,于是决定从响应头入手,看看有没有有用的信息,果然,在响应头中找到这一条
Content-Encoding: gzip
这就表示服务端的响应体经过了gzip压缩编码,这下就好办了,使用go提供的原生库"compress/gzip"
就能轻松解码。具体代码如下:
gr,err:=gzip.NewReader(resp.Body) //初始化gzip reader
defer gr.Close() //函数退出时关闭reader防止内存泄漏
if err!=nil{
return err
}
raw,_=ioutil.ReadAll(gr) //从gzip reader中读取解码后的字节流
ok,完工。
参考文章: