python - 无法将有效的 CURL PUT 语句转换为有效的 python 脚本

标签 python curl

这是我尝试将其放入 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/

相关文章:

javascript - 无法通过 XMLHttpRequest 验证其余调用

PHP - 下载大文件的安全方法?

android - android sha224和python sha224的区别

cURL SSL 无法在 Xampp 上获取本地颁发者证书

curl - 使用curl下载时如何跳过已经存在的文件?

python - 如何使用 GAE/Python 设置 cookie 1 个月?

php - stream_context_create 证书验证失败

Python - 检查类是否存在

python - 你能推荐一个适用于 Python 的 Amazon AMI 吗?

python - 错误 "AttributeError: ' NoneType' object has no attribute 'kernel' when using simply vpython