繁体   English   中英

将curl POST转换为urllib请求python3

[英]Convert curl POST to urllib request python3

以下curl命令可按预期工作。 使用POST将一些信息发送到网站。

    curl 'https://...' \
     -X PUT \
     -d "submission[posted_grade]=65" \
     -H "Authorization: Bearer 10~X" 

等效的python3代码应该是什么,给出错误500:Internal Server Error

url_string = 'https://...'
data = "submission[posted_grade]=40"
data = data.encode('utf-8')
req = urllib.request.Request(url_string, data)
req.add_header("Authorization", "Bearer 10~X")
req.add_header("Content-Type", "application/json")
response = urllib.request.urlopen(req)
print(response.read())

已经尝试过

data = {'submission[posted_grade]': '40'}
data = json.dumps(data)
data = data.encode('utf-8')

给出“ HTTP错误422:无法处理的实体”

有修复的想法吗?

谢谢@cody

获得的经验教训,PUT!= POST

以下代码按预期工作:

url_string = 'https://...'
data = "submission[posted_grade]=40"
data = data.encode('utf-8')
req = urllib.request.Request(url=url_string, data=data, method='PUT')
req.add_header("Authorization", "Bearer 10~X")
response = urllib.request.urlopen(req)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM