专栏首页北京宏哥python接口自动化(八)--发送post请求的接口(详解)

python接口自动化(八)--发送post请求的接口(详解)

简介

  上篇介绍完发送get请求的接口,大家必然联想到发送post请求的接口也不会太难,被聪明的你又猜到了。答案是对的,虽然发送post请求的参考例子很简单,但是实际遇到的情况却是很复杂的,因为所有系统或者软件、网站都是从登录开

始的,进入这扇门才可以发现里边的奥秘,所以首先介绍的第一个post请求肯定是登录了,但登录是最难处理的。如果把登录问题这只拦路虎解决了,那么后面问题都迎刃而解。

help函数

  上篇介绍发送get请求的接口时,学习requests模块,是让大家去访问官方网站,查看官方文档;其实学习一个新的模块捷径,不用去百度什么的,直接用 help 函数就能查看相关注释和案例内容。

python发送get请求接口案例:

python发送post请求接口案例:

发送post请求的接口(dict参数)

  上一篇,我们就见识过requests的强大功能和威力。寥寥几行代码就可以实现get和post的请求。介绍到这里想必大伙都迫不及待了,好,那我们来牛刀小试一下。

1、用上面给的python发送post请求接口案例,稍稍地做个简单修改,就可以发个简单的post 请求

2、便可以像官方文档给出的案例将payload 参数是字典类型(dict),传到如下图的 form 里

发送post请求的接口(json参数)

1、post 的 body 是 json 类型,也可以用 json 参数传入。

2、先导入 json 模块,用 dumps 方法转化成 json 格式。

3、返回结果,传到 data 里

请求头header

  现在由于对接口安全性的要求,使得模拟登录越来越复杂,比上边介绍的基本内容要复杂很多。一般来说登陆只要涉及安全性方面考虑,那么登陆就会比较复杂。

1、以博客园为例,几年前模拟登陆,没有涉及安全性考虑相对简单。发展到现在其登录涉及安全性考虑,所以实际的情况要比上面讲的几个复杂很多,

2、我们在请求数据时也可以加上自定义的headers(通过headers关键字参数传递)有时候有的特殊的请求必须加上headers头信息,才回返回响应结果。例如:博客园登录时,将请求头 headers添加上,这里不是说博客园登录必须登录才能返回

响应结果,而是以其为例子来说明将请求头header参数加入到登录请求接口中。这里可以用抓包工具来看其登录时的请求头。如下是fiddler工具抓包时登录的请求头。

3、由于博客园的登录方式改变了,我们换一个例子演示。还是以官方文档给的网址演示如下

  (1)抓包,查看其请求头,浏览器F12查看

  Fiddler抓包查看请求头,结果如下:

  实例代码和其结果:

遇到问题报错和解决办法:

raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool(host='httpbin.org', port=443): Max retries exceeded with url: /post (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')])")))

小结

1、由于这里是 https 请求,直接发送请求会报错误:SSLError: HTTPSConnectionPool(host='httpbin.org', port=443): Max retries exceeded with url: /post (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')])")))

2、可以加个参数:verify=False,表示忽略对 SSL 证书的验证,但是此时仍然会有警告:

InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings InsecureRequestWarning)

3、这里请求参数 payload 是 json 格式的,用 json 参数传。将请求头写成字典格式,进行传参。

4、最后结果是 json 格式,可以直接用 r.json 返回 json 数据:

{'args': {}, 'data': '', 'files': {}, 'form': {}, 'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Content-Length': '0', 'Host': 'httpbin.org', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko'}, 'json': None, 'origin': '222.128.10.95, 222.128.10.95', 'url': 'https://httpbin.org/post'}

5、json参数和dict的参数非常类似,都是key-value的形式,它们有何区别,欲知后事如何,且听下回分解。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python接口自动化(十一)--发送post【data】(详解)

      前面登录博客园的是传 json 参数,由于其登录机制的改变没办法演示,然而在工作中有些登录不是传 json 的,如 jenkins 的登录,这里小编就以je...

    北京-宏哥
  • python接口自动化(十)--post请求四种传送正文方式(详解)

      post请求我在python接口自动化(八)--发送post请求的接口(详解)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等。我们要知道...

    北京-宏哥
  • python接口自动化(十四)--session关联接口(详解)

      上一篇cookie绕过验证码模拟登录博客园,但这只是第一步,一般登录后,还会有其它的操作,如发帖,评论等等,这时候如何保持会话呢?这里我以jenkins平台...

    北京-宏哥
  • 秒杀系统 架构分析 与 实战

    (1)查询商品; (2)创建订单; (3)扣减库存; (4)更新订单; (5)付款; (6)卖家发货;

    用户1516716
  • 秒杀系统架构分析与实战,一文带你搞懂秒杀架构!

    (1)查询商品; (2)创建订单; (3)扣减库存; (4)更新订单; (5)付款; (6)卖家发货;

    Java技术栈
  • 秒杀系统架构分析与实战

    (1)查询商品; (2)创建订单; (3)扣减库存; (4)更新订单; (5)付款; (6)卖家发货;

    Java团长
  • 这是我读过写得最好的【秒杀系统架构】分析与实战!

    假设某网站秒杀活动只推出一件商品,预计会吸引1万人参加活动,也就说最大并发请求数是10000,秒杀系统需要面对的技术挑战有:

    芋道源码
  • 纯干货--秒杀系统架构分析与实战

    (1)查询商品;(2)创建订单;(3)扣减库存;(4)更新订单;(5)付款;(6)卖家发货

    后端技术探索
  • 如何设计一个高性能的秒杀系统

    秒杀系统要如何架构,在做技术方案时要注意哪些问题,搞了个秒杀专辑,专门收集秒杀系列文章。

    用户7676729
  • 你用 iPhone 打王者农药,有人却用它来训练神经网络...

    你知道吗?在 iOS 设备上也可以直接训练 LeNet 卷积神经网络,而且性能一点也不差,iPhone 和 iPad 也能化为实实在在的生产力。

    GitHubDaily

扫码关注云+社区

领取腾讯云代金券