当前位置: 首页 > 面试题库 >

python如何解码http响应

邵宜年
2023-03-14
问题内容

我正在使用以下代码从api端点登录和检索数据,但似乎响应已编码,因此我无法读取内容。我正在使用请求requestes-0.0.1

import requests
import json
import os


http_proxy  = "http://192.168.10.20:8888"
https_proxy = "https://192.168.10.20:8888"

proxyDict = {
              "http"  : http_proxy,
              "https" : https_proxy,
            }
session = requests.Session()

payloadopt = 'user_id=tom&password=xxxxx'
s = session.post('https://login.milock.com/api/login',data=payloadopt, proxies=proxyDict, verify=False, headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0', 'Accept':'application/json, text/plain, */*', 'Accept-Language':'en-US,en;q=0.5', 'Accept-Encoding':'gzip, deflate, br', 'Content-Type':'application/x-www-form-urlencoded'}, stream=True)

当我在控制台上打印相同的响应

▒▒7▒E`▒▒YD▒▒k▒샄▒q▒▒f,▒▒G▒(U▒Uv▒4ڍ▒߼w&▒▒!Ψ▒▒▒▒E5Q▒_▒▒{▒F▒▒<.▒▒▒▒4▒▒> p{▒k9▒▒֏9▒▒

有人可以告诉我如何解码和读取响应中的数据


问题答案:

响应通过brotli压缩进行编码。标准库不支持此压缩方法。您可以从pypi安装第三方软件包以将其解压缩-
有许多可用的软件包。

例如

$ pip install brotli



>>> import brotli
>>> decompressed = brotli.decompress(response.content)
>>> dict_ = json.loads(decompressed)

如果您不想避免安装第三方模块,请'br'从请求中的“ accept-encoding”标头中删除:

'Accept-Encoding':'gzip, deflate, br' -> 'Accept-Encoding':'gzip, deflate'


 类似资料:
  • 问题内容: 我有一个PHP脚本,需要使用HTTP响应代码(状态代码)进行响应,例如HTTP 200 OK,或一些4XX或5XX代码。 如何在PHP中做到这一点? 问题答案: 我刚刚发现了这个问题,并认为它需要一个更全面的答案: 从 PHP 5.4开始 ,有三种方法可以实现此目的: 自行组装响应代码(PHP> = 4.0) 该函数有一个特殊的用例,可以检测HTTP响应行,并让您用自定义行替换它 但是

  • 在解码签名部分时。 当解码看到这个断断续续的错误时,我做错了什么? 然后,我开始使用JWT库来解码令牌。 首先我尝试了 我在我的Android应用程序中做错了什么,阻止了auth0 Android jwt库的正常工作? 然后我在我的Android应用程序中尝试了库。 当我执行这个代码时:- 我从这个问题base64:java.lang.IllegalArgumentException:非法字符中发

  • 我正在使用下面的代码登录apiendpoint并从中检索数据,但响应似乎已编码,我无法读取内容。我正在使用request-requestes-0.0.1 当我在控制台上打印相同的响应 有人能告诉我如何解码和读取响应中的数据吗

  • 我想知道在REST API中应该如何响应。 有效示例: 以上是一个有效的请求,当前我的HTTP状态为200,有一个JSON响应

  • 使用Java进行一个简单的“delivery_quotes”调用进行测试,返回HTTP响应代码-403 我正在使用的客户ID和测试API密钥是正确的。任何帮助!