python requests post多层字典的方法

pyhton requests模块post方法传参为多层字典时,转换错误,

如,表单传参

{
“a”:1,
“b”:{
“A”:2,
“B”:3
}
}

post请求后看到form data是:

a:1
b:A
b:B

查看官方文档:

More complicated POST requests
Typically, you want to send some form-encoded data — much like an HTML form. To do this, simply pass a dictionary to the data argument. Your dictionary of data will automatically be form-encoded when the request is made:

payload = {‘key1': ‘value1', ‘key2': ‘value2'}

r = requests.post(“http://httpbin.org/post“, data=payload)
print(r.text)
{
…
“form”: {
“key2”: “value2”,
“key1”: “value1”
},
…
}

这里说post传入的dict类型参数会被自动转化为form-encoded,查看请求后,这里的demo是一个一层的字典。多层字典传输的时候,确实会异常。

解决办法:

将第二层字典转化为json,json.dumps({“A”:2,”B”:3}),然后赋给b。

以上这篇python requests post多层字典的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Python使用requests发送POST请求实例代码

    本文研究的主要是Python使用requests发送POST请求的相关内容,具体介绍如下. 一个http请求包括三个部分,为别为请求行,请求报头,消息主体,类似以下这样: 请求行 请求报头 消息主体 HTTP协议规定post提交的数据必须放在消息主体中,但是协议并没有规定必须使用什么编码方式.服务端通过是根据请求头中的Content-Type字段来获知请求中的消息主体是用何种方式进行编码,再对消息主体进行解析.具体的编码方式包括: application/x-www-form-urlencode

  • Python使用requests提交HTTP表单的方法

    Python的requests库, 其口号是HTTP for humans,堪称最好用的HTTP库. 使用requests库,可以使用数行代码实现自动化的http操作.以http post,即浏览器提交一个表格数据到web服务器,为例,来说明requests的使用. 无cookie import requests url = 'www.test.org' data = {'username': 'user', 'password': '123456'} response = requests.p

  • python实现requests发送/上传多个文件的示例

    1.需要的环境 Python2.X Requests 库 2.单字段发送单个文件 在requests中发送文件的接口只有一种,那就是使用requests.post的files参数, 请求形式如下: url = "http://httpbin.org/post" data = None files = { ... } r = requests.post(url, data, files=files) 而这个files参数是可以接受很多种形式的数据,最基本的2种形式为: 字典类型 元组列表

  • Python requests发送post请求的一些疑点

    前言 在Python爬虫中,使用requests发送请求,访问指定网站,是常见的做法.一般是发送GET请求或者POST请求,对于GET请求没有什么好说的,而发送POST请求,有很多朋友不是很清楚,主要是因为容易混淆 POST提交的方式 .今天在微信交流群里,就有朋友遇到了这种问题,特地讲解一下. 在HTTP协议中,post提交的数据必须放在消息主体中,但是协议中并没有规定必须使用什么编码方式,从而导致了 提交方式 的不同.服务端根据请求头中的 Content-Type 字段来获知请求中的消息主体

  • python 中字典嵌套列表的方法

    如下所示: >>> dict={} >>> dict['list']=[] >>> dict['list'].append([1,2,3,4]) >>> dict['list'].append([5,6,7]) >>> dict['list'].append([7,8,9,0,10]) 输出字典: >>> dict {'list': [[1, 2, 3, 4], [5, 6, 7], [7, 8,

  • python requests post多层字典的方法

    pyhton requests模块post方法传参为多层字典时,转换错误, 如,表单传参 { "a":1, "b":{ "A":2, "B":3 } } post请求后看到form data是: a:1 b:A b:B 查看官方文档: More complicated POST requests Typically, you want to send some form-encoded data - much like an

  • 对python requests的content和text方法的区别详解

    问题: 一直在想requests的content和text属性的区别,从print 结果来看是没有任何区别的 看下源码: @property def text(self): """Content of the response, in unicode. If Response.encoding is None, encoding will be guessed using ``chardet``. The encoding of the response content is

  • Python实现生成密码字典的方法示例

    本文实例讲述了Python实现生成密码字典的方法.分享给大家供大家参考,具体如下: key_data.py 文件存放组成数据,可以随时扩充及简化. #coding=utf-8 #!/usr/bin/python def year():#返回字符串类型的年份列表 year = range(1984,2018)# 常用年份列表 year_str = [] for y in year: year_str.append(str(y)) return year_str def month_or_day(n

  • python中退出多层循环的方法

    1.定义标记变量:利用变量值的变化退出循环 # 第一种嵌套形式 a = [[1, 2, 3], [5, 5, 6], [7, 8, 9]] # init_i = 0 # init_j = 0 flag = True for i in range(3): for j in range(3): # print(i, j) if a[i][j] == 5: flag = False init_i = i init_j = j break if not flag: break print(init_i,

  • Python生成元组和字典的方法

    目录 1.生成元组 1.1使用()生成元组 1.2使用tuple函数生成元组 1.3使用divmod函数生成元组 2.生成字典 2.1使用{}生成字典 2.2使用dict函数生成字典 1.生成元组 元组是元素按顺序组合后的产物,元组对象的类型是tuple型 含有两个元素的元组成为数据对 元组可以包含任意数量和任意类型的元素,其元素总数可以为0.1.2等,并且元素的先后顺序是由意义的.另外,元组中的元素类型没有必要一致,可以多种类型组合在一起. 元组是不可变类型,这一点与列表完全不同 1.1使用(

  • 详解Python requests 超时和重试的方法

    网络请求不可避免会遇上请求超时的情况,在 requests 中,如果不设置你的程序可能会永远失去响应. 超时又可分为连接超时和读取超时. 连接超时 连接超时指的是在你的客户端实现到远端机器端口的连接时(对应的是 connect() ),Request 等待的秒数. import time import requests url = 'http://www.google.com.hk' print(time.strftime('%Y-%m-%d %H:%M:%S')) try: html = re

  • python 使用值来排序一个字典的方法

    下面先看下python 使用值排序字典的方法 In [8]: a={'x':11,'y':22,'c':4} In [9]: import operator In [10]: sorted(a.items(),key=operator.itemgetter(1)) Out[10]: [('c', 4), ('x', 11), ('y', 22)] In [11]: a={'x':11,'y':22,'c':4} In [12]: sorted(a.items(),key=lambda x:x[1

  • Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解

    1.Python requests模块说明 requests是使用Apache2 licensed 许可证的HTTP库. 用python编写. 比urllib2模块更简洁. Request支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动响应内容的编码,支持国际化的URL和POST数据自动编码. 在python内置模块的基础上进行了高度的封装,从而使得python进行网络请求时,变得人性化,使用Requests可以轻而易举的完成浏览器可有的任何操作. 现代,国际化

  • Python requests.post()方法中data和json参数的使用方法

    目录 json和dict requests.post() post请求中json和data的区别 json和dict python中的dict类型要转换为json格式的数据需要用到json库: import json <json> = json.dumps(<dict>) <dict> = json.loads(<json>) 需要注意的是: python中并没有json类型这一说法,通过json.dumps(<dict>)转换的字典对象,最后得

  • python requests.post请求404问题及解决方法

    目录 问题场景 问题分析 postman测试 问题解决 结论 问题场景 有时候,在编写一段http接口请求程序时,发现代码中的header头和请求体中都是原网页中一样,但是,在实际请求时,接口却返回404,代码如下 header = { # ':authority': 'm.ctrip.com', # ':method': 'POST', # ':path': '/restapi/soa2/20405/getPCSightList', # ':scheme': 'https', 'accept'

随机推荐