这是我尝试将其放入 python 脚本中的工作curl 语句:
curl -L -H 'X-Cisco-Meraki-API-Key: <key>' -X PUT -H'Content-Type: application/json' --data-binary '{"name":"new SSID name", "enabled":true, "authMode":"psk", "encryptionMode":"wpa", "psk":"abcd1234", "ipAssignmentMode":"Bridge mode"}' 'https://dashboard.meraki.com/api/v0/networks/[networkId]/ssids/[number]'
这是我的Python代码。
import requests
import json
url = "https://dashboard.meraki.com/api/v0/networks/XXXXXXX/ssids/2"
headers = {'X-Cisco-Meraki-API-Key': 'YYYYYYY', 'content-type': 'application/json'}
payload = {"name":"test", "enabled":"true", "authMode":"psk", "encryptionMode":"wpa", "psk":"abcd1234", "ipAssignmentMode":"NAT mode"}
r = requests.put(url, headers=headers, data=payload, allow_redirects=True)
print r.status_code
当我运行curl命令时,它可以工作,但是当我尝试python脚本时,我收到400错误消息。我的猜测是,这与应用程序解释有效负载的方式有关。任何帮助将不胜感激。
最佳答案
您需要使用:
data=json.dumps(payload)
而不是:
data=payload
当您添加 'content-type': 'application/json'
header 时,您意味着您正在发送 json 数据
,这就是您需要使用json.dumps()
发送有效的 json 数据而不是 Python 字典/对象
。
关于python - 无法将有效的 CURL PUT 语句转换为有效的 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41168422/