相关文章推荐

在通过requests.post()进行POST请求时,传入参数有两个,一个是data,一个是json。那么如何区分他们呢

一,请求头的数据格式为 Content-Type=application/json

如果请求头的数据格式为 Content-Type=application/json ,表明我们要传入的参数是序列化后的 JSON 字符串。然而在python中,我们的参数往往写成以下格式:

data = {
        "loginType": 0,
        "password": "c9e672bfee5ab65ee471e1e0547e01a7",
        "playerAccount": "15872285573",
        "deviceCode": "00-E1-8C-B8-14-4C",
        "deviceSoftVersion": "V1.0.0",
        "platform": 4,
        "platformModel": "1.0",
        "timestamp": 1606273340134

data就是我们要传的参数,python中是以字典的形式存在的,数据类型就是字典,但是传入的数据要求是json格式的字符串,因此传入的时候需要转换。

1. 通过json.dumps将data数据转化成json格式

将我们传入的data参数通过json.dumps转换后就变成了json格式的字符串,如下:

import json
data = {
        "loginType": 0,
        "password": "c9e672bfee5ab65ee471e1e0547e01a7",
        "playerAccount": "15872285573",
        "deviceCode": "00-E1-8C-B8-14-4C",
        "deviceSoftVersion": "V1.0.0",
        "platform": 4,
        "platformModel": "1.0",
        "timestamp": 1606273340134
data_json=json.dumps(data)
print(data_json)
print(type(data_json))

打印出来的结果为:
在这里插入图片描述
格式为json格式,类型为字符串,此时刚好满足application/json的含义,传入的参数就可以用data传参,但是此时必须传入headers=sapplication/json;charset=UTF-8,因为headers请求头表明传入的是序列化的json格式,刚好和转化后的data对应

import requests,json
def login():
    '''通过登录拿到返回的token'''
    url = 'http://10.9.0.128:9999/user/un/login'
    data = {
        "loginType": 0,
        "password": "c9e672bfee5ab65ee471e1e0547e01a7",
        "playerAccount": "15872285573",
        "deviceCode": "00-E1-8C-B8-14-4C",
        "deviceSoftVersion": "V1.0.0",
        "platform": 4,
        "platformModel": "1.0",
        "timestamp": 1606273340134
    data_json=json.dumps(data)
    re = requests.post(url=url, data=data_json,headers={
        "Content-Type":"application/json;charset=UTF-8"
2. data数据不做转换处理

在data数据不做处理的时候,post请求头必须用json参数,请求头headers是否传headers="Content-Type":"application/json;charset=UTF-8",都不影响

import requests,json
def login():
    '''通过登录拿到返回的token'''
    url = 'http://10.9.0.128:9999/user/un/login'
    data = {
        "loginType": 0,
        "password": "c9e672bfee5ab65ee471e1e0547e01a7",
        "playerAccount": "15872285573",
        "deviceCode": "00-E1-8C-B8-14-4C",
        "deviceSoftVersion": "V1.0.0",
        "platform": 4,
        "platformModel": "1.0",
        "timestamp": 1606273340134
    re = requests.post(url=url, json=data)
    print(type(data))
    return re.text
二、请求头的数据格式为application/x-www-form-urlencoded

当请求数据格式为表单的时候,我们的请求数据只能为字典,不能进行转换,传输的格式转换为键值对并按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码。

在通过requests.post()进行POST请求时,传入报文的参数有两个,一个是data,一个是jsondatajson既可以是str类型,也可以是dict类型。 1、不管json是str还是dict,如果不指定headers的content-type,默认为application/json 2、data为dict时,如果不指定content-type,默认为applicati...
POST方法传参datajson区别 在通过requests.post()进行POST请求时,传入报文的参数有两个,一个是data,一个是json。 def post(url, data=None, json=None, **kwargs): datajson区别 1.data参数需要使用json.dumps将字典类型转换成json格式的字符串对象 2.json参数会自动将字典类型的对象转换为json格式 ◆data:字典对象 ◆jsonjson字符串 如何将字典对象转换成json字符串
接口测试requests.post方法datajson参数区别 首先说明一下requestspost方法datajson传参 requests.post(url,data=data,headers=headers) requests.post(url,json=json,headers=headers) 如果传data,那你必须要保证data传的是一个python的字典类型 如果传json,那你必须保证json传的是一个json类型 1、如果你本来data存的是字典,但是你需要传的是j
python的dict类型要转换为json格式的数据需要用到json库: 需要注意的是:python并没有json类型这一说法,通过json.dumps()转换的字典对象,最后得到的是一个字符串对象,在pythonjson格式的数据实际上就是一个字符串。 虽说json格式的数据在python是以字符串的类型存在的,但是通过str()工厂函数所得到的结果同json.dumps()方法所得到的结果是不相同的 可以看出string和js的区别在于引号对于可以...
不管参数是str还是dict类型,如果不指定headers的content-type,默认为application/json,当参数为dict类型时,request.body内容为b'{"name":"zhubaoxiang"}' 当参数类型为str时,request.body内容为b'"{\\"name\\":\\"zhubaoxiang\\"}"',可以看到,json默认会帮你json dumps一下。我们观看requests源码也得出相同结论: def prepare_b
HTTP协议介绍 我们知道,HTTP 协议通过 ASCII 码的形式进行传输,是建立在 TCP/IP 协议之上的应用层协议,HTTP/1.1 协议规定的请求方式有八种:OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT。其通过 POST 提交表单的方式最为常见。 HTTP/1.1 协议规定将一个完整的 HTTP 请求分为三个部分,请求行,请求头和请求主体。大概框架如下: <method> <request-URL> <versio
最近在使用PythonRequest库的时候,很多小朋友问post请求datajson区别: 假如我们请求的body是json方式,请求的数据为payload payload = {'key1': 'value1', 'key2': 'value2'} 如果是低版本的Requests的话,我们只有使用导入json来把字典dict转化成json: import json url...
Python,可以使用`requests.post`方法来发送POST请求。有几种不同的用法可以根据你的需求选择。 第一种方式是使用`x-www-form-urlencoded`格式的数据发送POST请求。你可以使用一个字典来表示要发送的数据,然后将该字典作为`data`参数传递给`requests.post`方法。例如: ```python import requests url = "https://editor.net/" data = {"key": "value"} # 字典格式,外层无引号 resp = requests.post(url, data=data) print(resp.text) 第二种方式是使用Python模拟浏览器发送POST请求。你可以使用`requests.post`方法,并通过`data`参数传递要发送的数据。与第一种方式不同的是,该参数可以接受字符串作为输入。例如: ```python import requests url = "https://editor.net/" data = '{"key": "value"}' # 字符串格式 resp = requests.post(url, data=data) print(resp.text) 除了上述两种方式,还可以使用`json`参数来发送POST请求。你可以将要发送的数据转换为JSON格式的字符串,并将其作为`data`参数传递给`requests.post`方法。例如: ```python import requests url = "https://editor.net/" data = {"key": "value"} # 字典格式 resp = requests.post(url, json=data) print(resp.text) 以上就是Python`requests.post`方法的用法。你可以根据不同的需求选择适合的方式来发送POST请求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python requests post 使用方法](https://blog.csdn.net/qq_42777433/article/details/105829795)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
 
推荐文章