【HTTP】HTTP请求体中的四种格式,requests库发送post请求

编码后的字符串

import requests

payload = '''
 report 
 Overall:良好 
 Progress: 30% 
 Problems:暂无
'''
r = requests.post("http://httpbin.org/post", 
                  data=payload.encode('utf8'))
print(r.text)

XML

如果设计者决定用 XML 格式传输一段信息,用Requests库,只需要这样

import requests

payload = '''
<?xml version="1.0" encoding="UTF-8"?>
<WorkReport>
    <Overall>良好</Overall>
    <Progress>30%</Progress>
    <Problems>暂无</Problems>
</WorkReport>
'''

r = requests.post("http://httpbin.org/post",
                  data=payload.encode('utf8'))
print(r.text)

我们要传递的工作报告里面,存在的问题有 多个,用 XML 就可以这样表示

<?xml version="1.0" encoding="UTF-8"?>
<WorkReport>
    <Overall>良好</Overall>
    <Progress>30%</Progress>
    <Problems>
       <problem  no='1'>
        <desc>问题1....</desc>
       </problem>
       <problem  no='2'>
        <desc>问题2....</desc>
       </problem>
    
    </Problems>
</WorkReport>

urlencoded

这种格式的消息体就是一种 键值对的格式存放数据,如下所示

key1=value1&key2=value2

如果参数中本身就有特殊字符,比如等号,就会被看成参数的分隔符,只需要将这些键值对的数据填入一个字典。

然后使用post方法的时候,指定参数 data 的值为这个字典就可以了,如下

import requests

#payload ="key1=value1&key2=value2"   可直接传入字符串
payload = {'key1': 'value1', 'key2': 'value2'}

r = requests.post("http://httpbin.org/post", data=payload)
print(r.text)

如果我们用工具抓包就可以发现 发送的http请求如下
在这里插入图片描述

json

构建一个json 格式的字符串,可以使用json库的dumps方法

import requests,json

payload = {
    "Overall":"良好",
    "Progress":"30%",
    "Problems":[
        {
            "No" : 1,
            "desc": "问题1...."
        },
        {
            "No" : 2,
            "desc": "问题2...."
        },
    ]
}

r = requests.post("http://httpbin.org/post", data=json.dumps(payload))

也可以将 数据对象 直接 传递给post方法的 json参数,如下

r = requests.post("http://httpbin.org/post", json=payload)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bug 挖掘机

支持洋子

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值