簡體   English   中英

python如何解碼http響應

[英]python how to decode http response

我正在使用以下代碼從 api 端點登錄和檢索數據,但似乎響應已編碼,我無法讀取內容。 我正在使用 request requests-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)

如果您不想安裝第三方模塊,請從請求中的“accept-encoding”標頭中刪除'br'

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM