python - 怎么才能看到请求数据呢?

标签 python python-requests

这是我的代码,我使用requests.python2.7

 #create requests
    requests_vivo = requests.Session()
    #login url
    login_url = 'https://id.vivo.com.cn/api/login'
    #captcha_url
    captcha_url = 'https://id.vivo.com.cn/api/kaptcha.jpg?t=%.0f' % time.time()
    #header
    header = {
        "Accept": "application/json, text/javascript, */*; q=0.01",
        "Accept-Encoding": "gzip,deflate,sdch",
        "Accept-Language": "zh-CN,zh;q=0.8",
        "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
        "Host": "id.vivo.com.cn",
        "Origin": "https://id.vivo.com.cn",
        "Referer": "https://id.vivo.com.cn/?_%.0f"%time.time(),
        "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36"
    }
    #request captcha
    captcha_response = requests_vivo.get(url=captcha_url,headers=header)
    #write jpg
    with open('captcha_pic.jpg','wb') as f:
        f.write(captcha_response.content)

    captcha_code = raw_input('Please input code:')

    #data
    data = {
        "name": setting.username,
        "password": encryptPasswd(setting.password),
        "verificationCode": captcha_code,
        "remember": "0"
    }

    #login request
    login_response = requests_vivo.post(url=login_url,headers=header,data=data)
    print login_response.request.data

这是错误,我看不到数据:

#captcha
Please input code:8men
8men

    #error info
    Traceback (most recent call last):
      File "/home/freedom/work/app/sem/vivo/test.py", line 39, in <module>
        print login_response.request.data
    AttributeError: 'PreparedRequest' object has no attribute 'data'

我在网上找了很久。但是没有用。请帮助或尝试提供一些想法如何实现这一目标。

最佳答案

请求变成了 requests.PreparedRequest当使用 .post().get() 发送时。不幸的是,未编码数据不再可用。

您可以从 POST 响应中获得的是 login_response.request.body,但此时它已被编码为表单数据。

要将它变回一个很好用的字典,你可以使用这个:

# py2
import urlparse
dict(urlparse.parse_qsl(login_response.request.body))

# py3
from urllib.parse import parse_qsl
dict(parse_qsl(login_response.request.body))

关于python - 怎么才能看到请求数据呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48018622/

相关文章:

python - 使用sklearn NMF组件重建新数据与inverse_transform不匹配

python - 为什么相同的请求会在两台机器上导致不同的状态代码 200 和 429?

python - 从 Java 到 python 的 POST 请求重制获取 null

python - 为什么不同的设备在 Django 中使用相同的 session ?

python - Python 中 elif 的字典理解?

python - 如何将色阶标签移动到 matplotlib/xarray 中彩色字段的中间?

python-3.x - Python 3 - 无法使用 re 库进行打印

python-2.7 - token 在文件上传前过期

python - 从另一个函数更改函数中的局部变量

python - 使用基于项目的自定义路径下载 Scrapy 文件