Requests发Post请求data里面嵌套字典
一、Post请求,data里面嵌套字典
Requests发Post请求,data里面嵌套字典的常见形式如下:
info = {
"appid": "123",
"checkin_type": "6",
"role": "1",
"stunum": "15812086122"
}
form_data = {
'Data': '%s' % info,
'MsgType': 'APP_SEND_CARDCHECKIN_BYSTUNUM'
}
result = requests.post(url, data=form_data)
需提别注意的是,一定要用 'Data': '%s' % info格式化输出这种形式把嵌套的字典传给Data,如果直接将info当做value赋值给Data,即,'Data': info,请求是不成功的
{'error_code': '505', 'error_msg': 'Data格式不正确参数验证失败'}
通常当post传入data参数时候,请求格式一般为Content-Type: application/x-www-form-urlencoded格式,按照官方的说法数据字典在发出请求时会自动编码为表单形式,所以是不是因为这个原因,data中嵌套的字典需要处理成字符串才能正常发post,这点暂存疑惑???
二、Post常见用的请求方式
- 传参为json格式
通过抓包后,转换为raw格式,可以看到Content-Type: application/json
import requests
import josn
payload = {
'a': 1
'b': 2
}
# 方法一,将payload转为josn格式
payload = josn.jump(payload)
res = requests.post(url, data=payload)
# 方法二,直接用josn参数传递
res = requests.post(url, josn=payload)
- 传参为form-data格式
通过抓包后,转换为raw格式,可以看到Content-Type: application/x-www-form-urlencoded,此时直接把字典payload传给参数data即可,此处就需要注意的是,如果payload里面嵌套字典,切记要先将其转为字符串形式,然后再入参
import requests
payload = {
'a': 1
'b': 2
}
res = requests.post(url, data=payload)
- 传参带文件
post上传文件,首先需要构造file,格式如下,fp为文件路径,然后将构造好的file传给files即可
import requests
file = {
'file_name': open(fp, 'rb')
}
res = requests(url, files=file)
OK!
~
~
~
不积跬步,无以至千里
Requests发Post请求data里面嵌套字典的更多相关文章
- requests发送post请求的一些疑点
前言 在Python爬虫中,使用requests发送请求,访问指定网站,是常见的做法.一般是发送GET请求或者POST请求,对于GET请求没有什么好说的,而发送POST请求,有很多朋友不是很清楚,主要 ...
- Python requests模块params、data、json的区别
json和dict对比 json的key只能是字符串,python的dict可以是任何可hash对象(hashtable type): json的key可以是有序.重复的:dict的key不可以重复. ...
- 爬虫——控制台抓包和requests.post()发送请求
控制台抓包 打开方式及常用选项 1.打开浏览器,F12打开控制台,找到Network选项卡 2.控制台常用选项 1.Network: 抓取网络数据包 1.ALL: 抓取所有的网络数据包 2.XHR:抓 ...
- requests模块(请求接口)
下面分别是get,post,入参json,添加cookie,添加header,上传/下载文件 的接口请求举例: import requests #导入模块 #1.发get请求 url = 'htt ...
- 第四十节,requests模拟浏览器请求模块初识
requests模拟浏览器请求模块初识 requests模拟浏览器请求模块属于第三方模块 源码下载地址http://docs.python-requests.org/zh_CN/latest/use ...
- requests(二): json请求中固定键名顺序&消除键和值之间的空格
继上一篇requests发送json请求的文章后,实际工作中遇到了以下2种情况. 1:服务端要求json字符串,键名的顺序固定 2.服务端对于接收到的json数据中,若key和value之间有空格, ...
- 全--教程API, gem 'rest-client'(用于发简单请求); 请求测试;
安装:rest-client4400✨ gem install rest-client 一个简单的HTTP和REST client for Ruby. 可以用它来发HTTP请求 基本用法: requi ...
- Python+requests 发送简单请求--》获取响应状态--》获取请求响应数据
Python+requests 发送简单请求-->获取响应状态-->获取请求响应数据 1.环境:安装了Python和vscode编译器(Python自带的编译器也ok).fiddler抓包 ...
- requests模拟浏览器请求模块初识
requests模拟浏览器请求模块初识 一.下载 requests模拟浏览器请求模块属于第三方模块 源码下载地址http://docs.python-requests.org/zh_CN/lates ...
随机推荐
- 【转】【关于 A^x = A^(x % Phi(C) + Phi(C)) (mod C) 的若干证明】【指数循环节】
[关于 A^x = A^(x % Phi(C) + Phi(C)) (mod C) 的若干证明][指数循环节] 原文地址:http://hi.baidu.com/aekdycoin/item/e493 ...
- Java IO: Reader And Writer
原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) Java IO的Reader和Writer除了基于字符之外,其他方面都与InputStre ...
- id0-rsa WP合集
忙里偷闲做做题wwwwwwwwwwwww Intro to Hashing Intro to PGP Hello PGP Hello OpenSSL Intro to RSA Caesar Hello ...
- Java实现Luhm算法--银行卡号合法性校验
银行卡是由"发卡行标识代码 + 自定义 + 校验码 "等部分组成的. 银联标准卡与以往发行的银行卡最直接的区别就是其卡号前6位数字的不同. 银行卡卡号的前6位是用来表示发卡银行 ...
- 实战:CentOS 7.2 / Zabbix3.4安装graphtrees
众所周知的 Zabbix图形显示问题,决定使用graphtrees 插件. 环境:CentOS7.2 + Zabbix 3.4 1)首先切换到root用户以获得足够的权限将资源下载到 /usr/sha ...
- 使用itchat发送天气信息
微信发送当日天气情况 念头萌生 之前在浏览网站的时候发现了篇文章「玩转树莓派」为女朋友打造一款智能语音闹钟,文章中介绍了使用树莓派打造一款语音播报天气的闹钟. 当时就想照着来,也自己做个闹钟.因为一直 ...
- 那些让程序员目瞪口呆的Bug
程序员一生与bug奋战,可谓是杀敌无数,见怪不怪了!在某知识社交平台中,一个"有哪些让程序员目瞪口呆的bug"的话题引来了6700多万的阅读,可见程序员们对一个话题的敏感度有多高. ...
- Python——10模块
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- scrapy post payload的坑及相关知识的补充【POST传参方式的说明及scrapy和requests实现】
一.问题及解决: 在用scrapy发送post请求时,把发送方式弄错了. 本来应该是 application/x-www-form-urlencoded 弄成了application/json. 但 ...
- 禁止用户使用 sudo su 命令进入root 模式
禁止普通用户通过sudo su命令进入root模式的方法(在root模式下操作): 1. 修改 /etc/sudoers 的权限, 用来写入文件 # chmod 777 /etc/sudoers 2. ...