python使用requests POST提交一个键多个值方式

 更新时间:2022年02月14日 08:43:05   作者:win_turn  
这篇文章主要介绍了python使用requests POST提交一个键多个值方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

使用requests POST提交一个键多个值

问题

在使用POST提交数据时,想实现下面这种情况:

requests.post(url, data={'interests':'football','interests':'basketball'})

用这种方式肯定是错误的,因为字典中的key是唯一的。

解决方法

使用元组列表

代码如下:

import requests
url = 'http://httpbin.org/post'
r = requests.post(url, data=[('interests', 'football'), ('interests', 'basketball')])
r.json()['form']

requests库的post请求4种类型参数

用python来验证接口正确性,主要流程有:

  • 1 设置url
  • 2 设置消息头
  • 3 设置消息体
  • 4 获取响应
  • 5 解析相应
  • 6 验证数据

Content-Type的格式有四种:分别是application/x-www-form-urlencoded(这也是默认格式)、application/json、text/xml以及multipart/form-data格式。

1、application/x-www-form-urlencoded数据格式

请看代码:

datas = {'parameter1':'12345','parameter2':'23456'}
r = requests.post('http://example.com',data=datas)
print(r.content)
print(r.status_code)

解说:Reqeusts支持以application/x-www-form-urlencoded数据格式发送post请求,只需要将请求的参数构造成一个字典,然后传给requests.post()的data参数即可。

2、application/json数据格式 


application/json格式的请求头是指用来告诉服务端post过去的消息主体是序列化后的 JSON 字符串。

请看带代码:

url = 'http://www.example/post'
s = json.dumps({'key1': 'value1', 'key2': 'value2'})
r = requests.post(url, data=s)
print (r.text)

区别:

这里我们可以发现Requests模拟post请求时,请求头格式为application/x-www-form-urlencoded与application/json的主要差别在于请求主体的构造格式(前者是键值对,后者是JSON串),前者直接用字典传入,后者用json.dumps()函数将字典转为JSON串即可。

3、text/xml数据格式

请看代码:

xml = """my xml"""
headers = {'Content-Type': 'application/xml'}
requests.post('http://www.example.com', data=xml, headers=headers)

或者把xml作为一个文件来传输:

import requests
def request_ws(request):
with open(archivo_request,"r") as archivo:
    request_data = archivo.read()
target_url = "http://127.0.0.1:8000/?wsdl"
headers = {'Content-type':'text/xml'}
data_response = requests.post(target_url, data=request_data, headers=headers)

4、multipart/form-data数据格式

除了传统的application/x-www-form-urlencoded表单,我们另一个经常用到的是上传文件用的表单,这种表单的类型为multipart/form-data,multipart/form-data主要用于文件上传,当我们使用它时,必须让 form表单的enctype 等于 multipart/form-data

直接来看一个请求示例,主要:

请看代码(实现上传本地的test.txt文件):

import requests 
files = {"file": open("C:/Users/Administrator/Desktop/test.txt", "rb")}
r = requests.post("http://httpbin.org/post", files=files) 
print(r.text)

具体请看实际例子:

import requests
import json
# 设置URL
url = "http://demo.9meikf.cn/usystem/auto/getAnswer.do"
# 设置消息头
headers = {
    "Cookie":"JSESSIONID=EA01FF2B025861F39E29712C97F7DF69;CASTGC=TGT-136-bLQMf0CAikK4BGaydOfIeKd6tWpZQEznJ2ZWdcVl9ofI4LiaQb-cas01.example.org",
    "Content-Type":"application/json"
    }
# 设置消息体
data = {"companyId":"48622",
        "nodeId":6,
        "question":"不需要",
        "templateId":"c6f5ad67fc2c11e8a11800163e086942"}
# 获取相应
response=requests.post(url,headers=headers,data=json.dumps(data))
print("Status code:",response.status_code)
print(response.text)
# 解析相应
info=response.json()
# 验证数据
assert str(info['answer'])=='reject'

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

相关文章

  • Python实现将Excel转换为json的方法示例

    Python实现将Excel转换为json的方法示例

    这篇文章主要介绍了Python实现将Excel转换为json的方法,涉及Python文件读写及格式转换相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • TensorFlow内存管理bfc算法实例

    TensorFlow内存管理bfc算法实例

    今天小编就为大家分享一篇TensorFlow内存管理bfc算法实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • PyQt子线程处理业务事件的问题解决

    PyQt子线程处理业务事件的问题解决

    在PyQt中,主线程通常是指GUI主循环所在的线程,而子线程则是执行实际工作的线程,本文主要介绍了PyQt子线程处理业务事件的问题解决,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • Python实现文件复制删除

    Python实现文件复制删除

    本文通过2个具体的实例,给大家展示了如何使用Python实现文件的复制与删除,非常的简单实用,有需要的小伙伴可以参考下
    2016-04-04
  • Python+OpenCV实现相机标定的方法详解

    Python+OpenCV实现相机标定的方法详解

    opencv中内置了张正友的棋盘格标定法,通过一些姿态各异的棋盘格图像,可以标定相机的内外参数,本文为大家介绍OpenCV进行相机标定的具体方法,希望对大家有所帮助
    2023-05-05
  • 详解 Python 与文件对象共事的实例

    详解 Python 与文件对象共事的实例

    这篇文章主要介绍了详解 Python 与文件对象共事的实例的相关资料,希望通过本文大家能掌握这部分内容,需要的朋友可以参考下
    2017-09-09
  • python实现字符串完美拆分split()的方法

    python实现字符串完美拆分split()的方法

    今天小编就为大家分享一篇python实现字符串完美拆分split()的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • python游戏实战项目之俄罗斯方块的魅力

    python游戏实战项目之俄罗斯方块的魅力

    迟早一定会挂掉的俄罗斯方块,为什么至今仍是世界游戏之王?它是怎么编写的?本文将给大家详细的介绍,对大家的学习或工作具有一定的参考借鉴价值
    2021-09-09
  • pytorch transforms图像增强实现方法

    pytorch transforms图像增强实现方法

    这篇文章主要介绍了pytorch transforms图像增强的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • Django数据库连接丢失问题的解决方法

    Django数据库连接丢失问题的解决方法

    这篇文章主要介绍了Django数据库连接丢失问题的解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12

最新评论