【问题标题】:Having trouble converting from curl request to Python从 curl 请求转换为 Python 时遇到问题
【发布时间】:2015-10-23 17:14:51
【问题描述】:

所以我有以下 curl 请求:

curl -F 'json={"method":"get_upload_status","params":{"token":"123","video_id":"456"}}' http://api.brightcove.com/services/post

并期待回应

{"error": {"name":"InvalidTokenError","message":"invalid token","code":210}, "result": null, "id": null}

我正在尝试将其转换为 python 请求,但我将其发送到的服务器不断返回一个找不到 json 的错误。目前我正在尝试

import requests
data = {'params': {'token': '123', 'video_id':'456'}, 'method': 'get_upload_status'}

requests.post(url='http://api.thesite.com/services/post', json=data)

但它一直返回错误。我尝试了多种方法,包括

# Attempt 1
requests.post(url='http://api.brightcove.com/services/post', data=data)

# Attempt 2
import json
requests.post(url='http://api.brightcove.com/services/post', data=json.dumps(data))

# Attempt 3
import json
requests.post(url='http://api.brightcove.com/services/post', json=json.dumps(data))

基本上所有的组合都无济于事。肯定是我做错了什么

【问题讨论】:

    标签: python json curl python-requests


    【解决方案1】:
    import requests
    import json
    
    data = {'json': json.dumps({'params': {'token': '123', 'video_id':'456'}, 'method': 'get_upload_status'})}
    
    requests.post(url='http://api.thesite.com/services/post', data=data)
    

    【讨论】:

    • 似乎不起作用。服务器现在返回: {u'id': None, u'result': None, u'error': {u'message': u"A JSONObject 文本必须在 params 的字符 1 处以 '{' 开头", u'code': 205, u'name': u'MalformedParametersError'}}
    • 似乎您的后端试图解析 json 键中的值,我已经编辑了答案。
    猜你喜欢
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 2013-12-26
    • 2016-01-30
    • 2020-03-18
    相关资源
    最近更新 更多