为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用请求修复 Python 中的“415 Unsupported Media Type”错误

如何使用请求修复 Python 中的“415 Unsupported Media Type”错误

holdtom 2021-12-17 16:51:12
我想通过使用 bitbucket 的 rest api 创建一个提交。到目前为止,所有关于问题的答案Response 415都已通过将Content-Type标题中的设置为来解决application/json;charset-UTF8。但是,这并不能解决我得到的响应。所以这就是我想要做的:import requestsdef commit_file(s, path, content, commit_message, branch, source_commit_id):    data = dict(content=content, message=commit_message, branch=branch, sourceCommitId=source_commit_id)    r = s.put(path, data=data, headers={'Content-type': 'application/json;charset=utf-8'})    return r.status_codes = requests.Session()s.auth = ('name', 'token')url = 'https://example.com/api/1.0/projects/Project/repos/repo/browse/file.txt'file = s.get(url)r = commit_file(s, url, file.json() , 'Commit Message', 'test', '51e0f6faf64')该GET请求成功返回的文件,我想提交的分支它的内容,test它确实存在。不管Content-Type,status_code的反应是415。这是放置请求的标头:OrderedDict([('user-agent', ('User-Agent', 'python-requests/2.21.0')), ('accept-encoding', ('Accept-Encoding', 'gzip, deflate')), ('accept', ('Accept', '*/*')), ('connection', ('Connection', 'keep-alive')), ('content-type', ('Content-type', 'application/json;charset=utf-8')), ('content-length', ('Content-Length', '121')), ('authorization', ('Authorization', 'Basic YnVybWF4MDA6Tnp...NkJqWGp1a2JjQ3dNZzhHeGI='))])这解释了 curl 的用法以及文件何时在本地可用。当如上所示检索文件内容时,正确的请求在 python 中会是什么样子?这是通过使用的解决方案MultipartEncoder:import requestsimport requests_toolbelt.multipart.encoderdef commit_file(s, path, content, commit_message, branch, source_commit_id):    data = requests_toolbelt.MultipartEncoder(        fields={            'content': content,            'message': commit_message,            'branch': branch,            'sourceCommitId': source_commit_id        }    )    r = s.put(path, data=data, headers={'Content-type': data.content_type})
查看完整描述

1 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

内容类型application/json;charset=utf-8不正确。

根据文档,您必须发送多部分表单数据。您不能使用 JSON。

此资源接受 PUT 多部分表单数据,其中包含名为content.


查看完整回答
反对 回复 2021-12-17
  • 1 回答
  • 0 关注
  • 391 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信