当前位置: 代码网 > it编程>前端脚本>Python > Python实现打印http请求信息

Python实现打印http请求信息

2024年07月05日 Python 我要评论
问题我们在开发过程中,为了快速验证接口,经常采用postman或者python代码先行验证的方式,确保接口正常,在测试接口过程中偶尔会遇到接口异常,这时候要和打印完整的http请求,帮助接口开发人员确

问题

我们在开发过程中,为了快速验证接口,

经常采用postman或者python代码先行验证的方式,确保接口正常,

在测试接口过程中偶尔会遇到接口异常,这时候要和打印完整的http请求,

帮助接口开发人员确认问题;

方法

仅仅是打印出这些信息,很简单:

import requests
response = requests.post('http://httpbin.org/post', data={'key1':'value1'})
print(response.request.headers)
print(response.request.body)

或者:

import requests

def pretty_print_post(req):
    print('{}\n{}\r\n{}\r\n\r\n{}'.format(
        '-----------start-----------',
        req.method + ' ' + req.url,
        '\r\n'.join('{}: {}'.format(k, v) for k, v in req.headers.items()),
        req.body,
    ))

req = requests.request('post','http://stackoverflow.com',headers={'x-custom':'test'},data='a=1&b=2')
prepared = req.prepare()
pretty_print_post(prepared)

s = requests.session()
resp = s.send(prepared)
print(resp.text)

但如果你想要在进行请求之前对http头和数据进行操作,也是使用prepare:

from requests import request, session

s = session()

req = request('post', url, data=data, headers=headers)
prepped = req.prepare()

# do something with prepped.body
prepped.body = 'no, i want exactly this as the body.'

# do something with prepped.headers
del prepped.headers['content-type']

resp = s.send(prepped,
    stream=stream,
    verify=verify,
    proxies=proxies,
    cert=cert,
    timeout=timeout
)

print(resp.status_code)

python 的库的用法去对应的库的帮助文档里去找,更为方便些;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com