如何在 Python 请求中包含列表 header
How to include a list in a Python requests header
我对使用 api 还很陌生。
我正在使用 requests.patch()
访问 api 以通过发送具有所需状态的开关列表来切换远程设备。我将 headers 设置为字典,其中一个值是开关列表;这对应于 api 文档。
data = {"Authorization" : "Bearer key_xxxxxxx",
"id": "d1234",
"switches": [{"id": "s1",
"state": "open"},
{"id": "s2",
"state": "closed"}
]}
r= requests.patch(url, headers=data)
我得到以下异常:
requests.exceptions.InvalidHeader: Value for header {switches: [{'id': 's1', 'state': 'open'}, {'id': 's2', 'state': 'closed'}]} must be of type str or bytes, not <class 'list'>
api 手册清楚开关是作为列表发送的,这是它们从 requests.get()
返回的方式,所以异常似乎与 requests
有关语法而不是特定于 api。
我显然不能 post 带有 api 键等的实际脚本,所以我希望有人能发现上面代码中的错误。
将有效负载和 headers 作为补丁函数的单独实体传递为:
header = {"Authorization":"Token token=xxxxxxxxxxxxxxxxxxxxxx"}
data = [{"id": "d1234",
"switches": [{"id": "s1",
"state": "open"},
{"id": "s2",
"state": "closed"}
]}]
r= requests.patch(url, data=json.dumps(data), headers=header)
请阅读docs
您不能在请求正文中发送数组。它们必须是字符串,接受此请求的 API 需要处理该字符串。您可以将该列表转换为 json 然后发送。并且 API 需要将此 json 对象转换为数组或任何其他类型。
import json
import requests
url = 'your_url'
your_list = ['some', 'list']
data = json.dumps(your_list)
header = {"Authorization": "Token"}
requests.patch(url, data=data, headers=header)
我对使用 api 还很陌生。
我正在使用 requests.patch()
访问 api 以通过发送具有所需状态的开关列表来切换远程设备。我将 headers 设置为字典,其中一个值是开关列表;这对应于 api 文档。
data = {"Authorization" : "Bearer key_xxxxxxx",
"id": "d1234",
"switches": [{"id": "s1",
"state": "open"},
{"id": "s2",
"state": "closed"}
]}
r= requests.patch(url, headers=data)
我得到以下异常:
requests.exceptions.InvalidHeader: Value for header {switches: [{'id': 's1', 'state': 'open'}, {'id': 's2', 'state': 'closed'}]} must be of type str or bytes, not <class 'list'>
api 手册清楚开关是作为列表发送的,这是它们从 requests.get()
返回的方式,所以异常似乎与 requests
有关语法而不是特定于 api。
我显然不能 post 带有 api 键等的实际脚本,所以我希望有人能发现上面代码中的错误。
将有效负载和 headers 作为补丁函数的单独实体传递为:
header = {"Authorization":"Token token=xxxxxxxxxxxxxxxxxxxxxx"}
data = [{"id": "d1234",
"switches": [{"id": "s1",
"state": "open"},
{"id": "s2",
"state": "closed"}
]}]
r= requests.patch(url, data=json.dumps(data), headers=header)
请阅读docs
您不能在请求正文中发送数组。它们必须是字符串,接受此请求的 API 需要处理该字符串。您可以将该列表转换为 json 然后发送。并且 API 需要将此 json 对象转换为数组或任何其他类型。
import json
import requests
url = 'your_url'
your_list = ['some', 'list']
data = json.dumps(your_list)
header = {"Authorization": "Token"}
requests.patch(url, data=data, headers=header)