将 curl 转换为 Python 请求

新手上路,请多包涵

我正在尝试将 curl 中的以下工作请求转换为 python 请求(使用 Requests )。

 curl --data 'query={"tags":["test1","test2"]}' http://www.test.com/match

(我使用了一个假网址,但该命令确实适用于真实网址)

接收端(在 Flask 中运行)这样做:

 @app.route("/match", methods=['POST'])
def tagmatch():
    query = json.loads(request.form['query'])
    tags = query.get('tags')
    # ... does stuff ...
    return json.dump(stuff)

在 curl (7.30) 中,在 Mac OS X (10.9) 上运行,上面的命令正确返回使用标签查询过滤的 JSON 列表。

我的 Python 脚本如下,它返回 400 Bad Request 错误。

 import requests

payload = {"tags":["test1", "test2"]}
# also tried  payload = 'query={"tags":["test1","test2"]}'
url = 'http://www.test.com/match'

r = requests.post(url, data=payload)

if __name__=='__main__':
     print(r.text)

原文由 zalc 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

您的服务器需要 JSON,但您没有发送它。尝试这个:

 import requests
import json

payload = {'query': json.dumps({"tags":["test1", "test2"]})}
url = 'http://www.test.com/match'

r = requests.post(url, data=payload)

if __name__=='__main__':
    print r.text

原文由 Lukasa 发布,翻译遵循 CC BY-SA 3.0 许可协议

https://curlconverter.com/ 有一个开源的 cURL 到 Python Requests 的转换助手。它并不完美,但在很多时候都有帮助。特别是用于转换 Chrome 的“Copy as cURL”命令。如果您需要以编程方式进行转换,还有一个 节点库

curlconverter.com 将给定命令转换为 Python 的屏幕截图

原文由 Gourneau 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题