如何在 python 中发送 POST 请求中的 urlencoded 参数
How to send urlencoded parameters in POST request in python
我正在尝试将我的生产就绪代码部署到 Heroku 以对其进行测试。不幸的是,它没有获取 JSON 数据,因此我们转换为 x-www-form-urlencoded。
params = urllib.parse.quote_plus(json.dumps({
'grant_type': 'X',
'username': 'Y',
'password': 'Z'
}))
r = requests.post(URL, data=params)
print(params)
这行显示错误,我猜 data=params
格式不正确。
有什么方法可以将 urlencoded 参数 POST 转换为 API 吗?
您不需要显式编码,只需传递一个字典即可。
>>> r = requests.post(URL, data = {'key':'value'})
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
需要注意的重要一点是,对于嵌套的 json 数据,您需要将嵌套的 json 对象转换为字符串。
data = { 'key1': 'value',
'key2': {
'nested_key1': 'nested_value1',
'nested_key2': 123
}
}
字典需要转换成这种格式
inner_dictionary = {
'nested_key1': 'nested_value1',
'nested_key2': 123
}
data = { 'key1': 'value',
'key2': json.dumps(inner_dictionary)
}
r = requests.post(URL, data = data)
将 Content-Type
header 设置为 application/x-www-form-urlencoded
。
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
r = requests.post(URL, data=params, headers=headers)
我正在尝试将我的生产就绪代码部署到 Heroku 以对其进行测试。不幸的是,它没有获取 JSON 数据,因此我们转换为 x-www-form-urlencoded。
params = urllib.parse.quote_plus(json.dumps({
'grant_type': 'X',
'username': 'Y',
'password': 'Z'
}))
r = requests.post(URL, data=params)
print(params)
这行显示错误,我猜 data=params
格式不正确。
有什么方法可以将 urlencoded 参数 POST 转换为 API 吗?
您不需要显式编码,只需传递一个字典即可。
>>> r = requests.post(URL, data = {'key':'value'})
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
需要注意的重要一点是,对于嵌套的 json 数据,您需要将嵌套的 json 对象转换为字符串。
data = { 'key1': 'value',
'key2': {
'nested_key1': 'nested_value1',
'nested_key2': 123
}
}
字典需要转换成这种格式
inner_dictionary = {
'nested_key1': 'nested_value1',
'nested_key2': 123
}
data = { 'key1': 'value',
'key2': json.dumps(inner_dictionary)
}
r = requests.post(URL, data = data)
将 Content-Type
header 设置为 application/x-www-form-urlencoded
。
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
r = requests.post(URL, data=params, headers=headers)