我正在尝试将curl中的以下工作请求转换为python请求(使用Requests)。
curl --data 'query={"tags":["test1","test2"]}' http://www.test.com/match
(我使用了一个假的url,但该命令可以使用真实的的url)
接收端(在 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错误请求错误。
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)
7条答案
按热度按时间ars1skjm1#
在https://curlconverter.com/上有一个开放源码的cURL到Python请求的转换助手。它并不完美,但在很多时候都有帮助。特别是对于转换Chrome的“复制为cURL”命令。如果你需要以编程方式进行转换,也有一个node library
d6kp6zgx2#
您的服务器需要JSON,但您没有发送。请尝试以下操作:
nuypyhwy3#
保存你一命
一个更简单的方法是:
1.打开POSTMAN
1.点击左上方的“导入”选项卡。
1.选择“原始文本”选项并粘贴cURL命令。
1.点击导入,你将在你的 Postman 构建器命令!
希望这对你有帮助!
作者:Onkaar Singh
lb3vh1jj4#
尝试使用uncurl库。它很好地完成了它的工作。我已经试过了。
它打印,
scyqe7ek5#
请尝试以下操作:
https://github.com/spulec/uncurl
v64noz0r6#
我为Sublime Text编写了一个名为Requester的HTTP客户端插件,它的一个特性是将对cURL的调用转换为请求,反之亦然。
如果你使用的是Sublime Text,这可能是你最快、最简单的选择。如果不是,这里的代码实际上处理了从cURL到Requests的转换。它基于uncurl,但是有很多改进和bug修复。
你可以用这段代码创建一个脚本,比如
curl_to_request.py
,然后从命令行调用这个脚本,它对Python 2和Python 3都有效。roqulrg37#
从使用
requests
和Flask的代码来看,您似乎没有发布正确的数据格式。payload 应该是这样的:当使用
requests.post()
时,这看起来不像是正常的post数据。所以如果你在这里发布了html表单,可能会更清楚地解决这个问题。下面是另一个类似的问题:使用Python请求传递登录名/密码