python中Requests发送json格式的post请求方法
作者:测试工程师Jane 发布时间:2021-05-24 10:09:45
标签:python,Requests,post,son
前言
问题:
做requests请求时遇到如下报错:
{“code”:“500”,“message”:"JSON parse error: Cannot construct instance of com.bang.erpapplication.domain.User (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value
原因:
Requests.post源码如下:
post请求传body的参数有两种:data和json,那么我们来看一下python各种数据结构做为body传入的表现
1.普通string类型
string2 = "2222222"
r = requests.post("http://httpbin.org/post", data=string2)
print(r.text)
返回的结果:
2.string内是字典的
import requests
string = "{'key1': 'value1', 'key2': 'value2'}"
r = requests.post("http://httpbin.org/post", data=string)
print(r.text)
返回结果:
3.元组(嵌套列表或者)
import requests
string = (['key1', 'value1'],)
r = requests.post("http://httpbin.org/post", data=string)
print(r.text)
返回结果:
4.字典
5.json
import requests
import json
dic = {'key1': 'value1', 'key2': 'value2'}
string = json.dumps(dic)
r = requests.post("http://httpbin.org/post", data=string)
print(r.text)
返回结果:
6.传入非嵌套元组或列表
string = ['key1','value1']
r = requests.post("http://httpbin.org/post", data=string)
print(r.text)
返回报错:
7.以post(url,json=data)请求
dic = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("http://httpbin.org/post", json=dic)
print(r.text)
运行结果:
由以上运行结果可以看出:
转入参数 | body数据类型 | headers(Content-type) |
---|---|---|
data | string | text/plain纯文本(默认) |
data | 元组(嵌套) | text/plain纯文本(默认)–转为dict |
data | 元组(非嵌套) | 报错,不支持 |
data | 列表 | 报错,不支持 |
data | 字典 | application/x-www-form-urlencoded(key/value表单) |
data | json(字符串但!= python string) | text/plain纯文本(默认)-要再做验证 |
json | 字典(源码内转成了json) | application/json(json串) |
现在让我们来看一下源码:
当转入json=data时:
当输入data=data时:
结论:
所以当你请求的data=dict时,未转为JSON的情况下,requests默认以表单形式key/value形式提交请求
setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
以json=dict形式请求时,以application/json格式发出请求
setRequestHeader("Content-type","application/json; charset=utf-8");
以data=其它请求时,默认就按纯文本格式请求:
setRequestHeader("Content-type", "text/plain; charset=utf-8");
来源:https://blog.csdn.net/totorobig/article/details/111071644
0
投稿
猜你喜欢
- 一、相关知识点讲解1.1 需要使用的相关库import numpy as npimport pand
- 多层索引的创建普通-多个index创建在创建数据的时候加入一个index列表,这个index列表里面是多个索引列表Series多层索引的创建
- spring boot 不连接数据库启动用spring boot 搭建的项目,在配置文件不连接数据库启动项目会报错。原因在于spring b
- 下表列出了所有Python语言支持的逻辑运算符。假设变量a持有10和变量b持有20,则: 示例:试试下面的例子就明白了所有的Pyt
- 题目:1. 利用拉格朗日乘子法#导入sympy包,用于求导,方程组求解等等from sympy import * #设置变量x1 = sym
- 摘要什么是python对象的标识python对象相等的判断自定义python对象相等的条件python对象的标识python对象标识就是py
- 背景当 TKE 集群配置了节点池并启用了弹性伸缩,在节点资源不够时可以触发节点的自动扩容 (自动买机器并加入集群),但这个扩容流程需要一定的
- 目录事件类型事件处理方法处理键盘事件处理鼠标事件事件(Event)是 Pygame 的重要模块之一,它是构建整个游戏程序的核心,比如鼠标点击
- 引言我们将学习如何构建一个终端应用程序(CLI应用程序)来管理我们的通讯录我们将使用type来构建CLI应用程序,使用Rich来创建彩色终端
- 求解三角形第三边长import mathx=input('输入两边长及夹角(度):')#输入时候使用空格分隔3个值a,b,t
- 代理服务是一种复杂的技术,具有很多可配置的移动组件。详细信息如下:信息信息是指在服务代理应用程序中调用的基本信息单元。对于服务代理来说,信息
- 今天在使用pytorch进行训练,在运行 loss.backward() 误差反向传播时出错 :RuntimeError: grad can
- JS添加/删除事件在IE和支持dom浏览器分别为:attachEvent(ie中的添加事件),detachEvent(ie中的删除事件),a
- 通过python对多个txt文件进行处理读取路径,读取文件获取文件名,路径名对响应的文件夹名字进行排序对txt文件内部的数据相应的某一列/某
- python实现PSO算法优化二元函数,具体代码如下所示:import numpy as np import random import m
- 一、python对json的支持从python2.6开始,python标准库中添加了对json的支持,操作json时,只需要import j
- 本文主要用python实现了对网站的模拟登录。通过自己构造post数据来用Python实现登录过程。当你要模拟登录一个网站时,首先要搞清楚网
- 使用字符串时,常见的操作之一是使用给定的分隔符将字符串拆分为子字符串数组。在本文中,我们将讨论如何在Python中拆分字符串。.split(
- 如何终止浏览器的 CAHCE 页面?Function Redirect( NewURL ) If&n
- 你通过以下语句,创建了一个数据库视图:create view entities_entity as select id, nam