接口测试 23 requests基础入门二

概述

继续requests基础分享,本文主要分享以下内容:

  • 请求头定制
  • POST请求

请求头定制示例

在requests中想要为请求添加自定义头信息,只需要简单的传入一个dict(即python字典类型对象)即可。

下面我们看一个简单的示例:

#-*- coding:utf-8 -*-__author__ = "苦叶子"# 导入模块import requestsif __name__ == "__main__":
    print("开源优测 - requests自定义请求头基本示例")

    url = "http://www.baidu.com"

    # 定义自定义请求头数据
    headers = {        "user-agent": "www.testingunion.com",        "custom-head": "DeepTest"
    }    # 发送带自定义头的请求
    r = requests.get(url, headers=headers)

将上述代码保存至requests_headers_demo.py中,执行以下命令:

注:所有的header值必须是string、bytestring或unicode,虽然传递unicode header是允许的,但不建议这样做

python requests_headers_demo.py

在运行上述命令前,先启动wireshark,用来抓取报文,看下我们自定义的headers是否正常被设置。

抓取的报文如下:

从报文来看,我们的设置是成功的,这说明了requests的机制是多么的简洁有效。

POST请求示例

下面我们看看requests如何发送HTTP POST请求的。

基本示例

#-*- coding:utf-8 -*-

__author__ = "苦叶子"


import requests

if __name__ == "__main__":
    print("requests post示例")    

    # 目标url
    url = "http://httpbin.org/post"

    # 请求头headers
    headers = {"custom-header": "mypost"}    

    # 要post的数据
    data = {"data_1": "deeptest", "data_2": "testingunion.com"}    
    
    # 发送post请求
    r = requests.post(url, data=data, headers=headers)    
    
    # 输出结果
    print(r.text)

将上述代码保存到requests_post_demo.py中,执行下述命令运行:

python requests_post_demo.py

用wireshark抓取上述自定义了header和data的报文如下:

post json数据示例

下面我们看看如何postjson数据到服务。

#-*- coding:utf-8 -*-

__author__ = "苦叶子"

import requests

if __name__ == "__main__":
    print("requests post json数据示例")    

    # 目标服务url
    url = "http://jsonplaceholder.typicode.com/posts"

    # 自定义头
    headers = {        
        "custom-post": "my-post",        
        "custom-header": "my-json-header"
        }    

    # 要post的数据
    json_data = {        
        "title": "deeptest",        
        "body": "开源优测",        
        "userId": "1"
        }    
        
    # post json格式的数据
    r = requests.post(url, json=json_data, headers=headers)    
    
    # 打印下返回结果
    print(r.text)

将上述代码保存到requests_post_json_demo.py中,执行下述命令运行:

python requests_post_json_demo.py

对上述代码执行,使用wireshark对http报文进行抓包如下:

原文发布于微信公众号 - 开源优测(DeepTest)

原文发表时间:2017-09-15

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏marsggbo

Flask入门笔记(一)

一、程序的基本结构 1.1 最简单的Flask程序 1 2 3 4 5 6 7 8 9 10 11 12 13 14#coding=utf-8 # 初始化 ...

20880
来自专栏张伟博客

双系统下Linux(ubuntu)不能进入windows的NTFS分区之挂载错误问题解决

18950
来自专栏拂晓风起

Flash builder打包as actionscript代码,发布swc

14440
来自专栏chafezhou

小说python的路径操作

16720
来自专栏自由而无用的灵魂的碎碎念

解决source insight 3.5遇到的parse too comples错误

我使用source insight 编写c,编写代码的时候,source insight的symbol windows可能会提示parse too comple...

13620
来自专栏PHP实战技术

你应该这个姿势学习PHP(4)

1、fopen() fwrite() fclose() fiel_put_contents

551150
来自专栏锦小年的博客

python学习笔记5.4-包的发布

有时候我们创建了一个非常好用的包,希望能够分发给好友一起使用,或者开源到网上,这个时候就要会利用python包的发布的工具。 一个健壮的包,并不只是包含有代...

203100
来自专栏程序员同行者

mysql命令行修改字符编码

19220
来自专栏Java3y

Struts2【配置】

前言 上篇Struts博文已经讲解了Struts的开发步骤以及执行流程了…..对Struts的配置文件有了了解…..本博文继续讲解Struts在配置的时候一些值...

28150
来自专栏深度学习之tensorflow实战篇

python 如何设置多线程

和多进程的思路类似,我们也可以实现对线程的创建,在Python中,使用threading包实现。参数如下: 构造方法: Thread(group=No...

26930

扫码关注云+社区

领取腾讯云代金券