iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python使用requests POST提交一个键多个值方式
  • 647
分享到

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

2024-04-02 19:04:59 647人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录使用requests POST提交一个键多个值问题解决方法requests库的post请求4种类型参数1、application/x-www-fORM-urlencoded数据格

使用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'

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: python使用requests POST提交一个键多个值方式

本文链接: https://www.lsjlt.com/news/139018.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python使用requests POST提交一个键多个值方式
    目录使用requests POST提交一个键多个值问题解决方法requests库的post请求4种类型参数1、application/x-www-form-urlencoded数据格...
    99+
    2024-04-02
  • python使用post方式提交数据
    #!/usr/bin/python # -*- coding: UTF-8 -*- import urllib,cookielib; import urllib2 #设置要请求的头,让服务器不会以为你是机器人 headers={'Use...
    99+
    2023-01-31
    方式 数据 python
  • python使用requests提交post请求并上传文件(multipart/form-data)
    目录 一、背景 二、请求接口上传文件         2.1、分析接口         2.2、python进行请求 三、总结 一、背景         也是前几天,有一个需求上传文件需要自动化。具体是上传到系统一个文件,并收到返...
    99+
    2023-09-04
    python 爬虫
  • Python使用POST方法发送HTTP请求的15个示例(基于requests)
    以下是使用requests库调用HTTP接口进行POST请求的15个示例: 发送简单的POST请求: import requestspayload = { 'key1': 'value1', '...
    99+
    2023-09-01
    python http
  • 如何使用json提取器一次性提取多个参数值
    这篇文章主要讲解了“如何使用json提取器一次性提取多个参数值”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用json提取器一次性提取多个参数值”吧!json提取器提取多个值以上是响应...
    99+
    2023-06-21
  • React中使用Axios发起POST请求提交文件方式
    目录使用Axios发起POST请求提交文件React中fetch和axios的简单使用fetch的使用Axios的使用总结使用Axios发起POST请求提交文件 通过Axios发起P...
    99+
    2023-02-13
    React使用Axios Axios发起POST请求 POST请求提交文件
  • python使用requests库提交multipart/form-data请求的方法详解
    目录前言multipart/form-dataPython 发送 multipart/form-data补充知识:multipart/form-data 参数转码总结前言 今天渗透测...
    99+
    2023-01-17
    python multipart/form-data python formdata请求 python multipart/form-data请求
  • python多个%s的使用方法 %格式符
    直接看代码理解 #!/usr/bin/python # -*- coding: utf-8 -*- a = "wry" b = "zjl" c = "xxx" print "a=%s, b=%s, c = %s" %(a,b,c) 输出 ...
    99+
    2023-01-31
    多个 使用方法 格式
  • 使用Servlet怎么实现一个表单提交功能
    使用Servlet怎么实现一个表单提交功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。用servlet实现一个注册的小功能 ,后台获取数据。注册页面:  注册页面代码 :&l...
    99+
    2023-05-31
    servlet 一个表
  • 一个Java方法可以使用多少个参数
    这篇文章主要介绍“一个Java方法可以使用多少个参数”,在日常操作中,相信很多人在一个Java方法可以使用多少个参数问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”一个Java方法可以使用多少个参数”的疑惑有所...
    99+
    2023-06-16
  • 怎么使用html制作一个简单的提交表单
    这篇文章主要介绍怎么使用html制作一个简单的提交表单,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!html制作一个表单的方法网页中常见的“登录”“注册”等功能通常都是使用表单实现的...
    99+
    2024-04-02
  • PHP中如何使用多个数组构建键值映射
    在PHP中,可以使用array_combine()函数将多个数组组合成一个键值映射数组。以下是一个示例: // 定义多个数组 $ke...
    99+
    2024-04-02
  • 使用python怎么实现两个变量值进行交换
    本篇文章给大家分享的是有关使用python怎么实现两个变量值进行交换,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。python 两个变量值交换方法一:c = ...
    99+
    2023-06-15
  • 使用python怎么向mysql中插入一个null值
    这期内容当中小编将会给大家带来有关使用python怎么向mysql中插入一个null值,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python在mysql中插入null空值sql = ...
    99+
    2023-06-07
  • python如何使用namedtuple和dataclass的方式定义一个类
    这篇文章主要介绍了python如何使用namedtuple和dataclass的方式定义一个类,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。...
    99+
    2024-04-02
  • 使用@RequestBody传递多个不同对象方式
    目录@RequestBody传递多个不同对象解决方案1解决方案2使用多个@RequestBody接收参数原因解决办法:两个类,直接copy即可@RequestBody传递多个不同对象...
    99+
    2024-04-02
  • 如何使用Python一键修改上万个文件名
    目录一、头疼的修改文件名,我是傻了二、茅塞顿开,秒解决同事问题总结一、头疼的修改文件名,我是傻了 同事问我会不会改目录下的文件名,我大叫一声:你傻呀,你不会右键重命名呀呀,或者按 F...
    99+
    2024-04-02
  • 一个超方便使用SQL的Python神器!
    背景其实一开始用的是pymysql,但是发现维护比较麻烦,还存在代码注入的风险,所以就干脆直接用ORM框架。ORM即Object Relational Mapper,可以简单理解为数据库表和Python类之间的映射,通过操作Python类,...
    99+
    2023-05-14
    Python SQL
  • 使用python怎么在一行中输出多个数
    本篇文章给大家分享的是有关使用python怎么在一行中输出多个数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、使用range方法快速生成10-90的数字添加进list列表。...
    99+
    2023-06-15
  • Java不使用第三方变量交换两个变量值的方法有哪些
    本篇内容介绍了“Java不使用第三方变量交换两个变量值的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!问题:请说出几种不使用第三方...
    99+
    2023-06-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作