翼度科技»论坛 编程开发 python 查看内容

Python实现打印http请求信息

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
问题

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

方法

仅仅是打印出这些信息,很简单:
  1. import requests
  2. response = requests.post('http://httpbin.org/post', data={'key1':'value1'})
  3. print(response.request.headers)
  4. print(response.request.body)
复制代码
或者:
  1. import requests

  2. def pretty_print_POST(req):
  3.     print('{}\n{}\r\n{}\r\n\r\n{}'.format(
  4.         '-----------START-----------',
  5.         req.method + ' ' + req.url,
  6.         '\r\n'.join('{}: {}'.format(k, v) for k, v in req.headers.items()),
  7.         req.body,
  8.     ))

  9. req = requests.Request('POST','http://stackoverflow.com',headers={'X-Custom':'Test'},data='a=1&b=2')
  10. prepared = req.prepare()
  11. pretty_print_POST(prepared)

  12. s = requests.Session()
  13. resp = s.send(prepared)
  14. print(resp.text)
复制代码
但如果你想要在进行请求之前对http头和数据进行操作,也是使用prepare:
  1. from requests import Request, Session

  2. s = Session()

  3. req = Request('POST', url, data=data, headers=headers)
  4. prepped = req.prepare()

  5. # do something with prepped.body
  6. prepped.body = 'No, I want exactly this as the body.'

  7. # do something with prepped.headers
  8. del prepped.headers['Content-Type']

  9. resp = s.send(prepped,
  10.     stream=stream,
  11.     verify=verify,
  12.     proxies=proxies,
  13.     cert=cert,
  14.     timeout=timeout
  15. )

  16. print(resp.status_code)
复制代码
python 的库的用法去对应的库的帮助文档里去找,更为方便些;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

来源:https://www.jb51.net/python/323450sdr.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具