这是我正在尝试放入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错误消息。我的猜测是它与应用程序解释有效负载的方式有关。任何帮助将不胜感激。
答案 0 :(得分:1)
您需要使用:
data=json.dumps(payload)
而不是:
data=payload
当您添加'content-type': 'application/json'
标题时,表示您发送json data
,这就是您需要使用json.dumps()
发送valide json数据的原因而不是Python dictionary / object
。