zal*_*alc 15 python curl python-2.7 python-requests
我正在尝试将curl中的以下工作请求转换为python请求(使用Requests http://docs.python-requests.org/en/v0.10.7/).
curl --data 'query={"tags":["test1","test2"]}' http://www.test.com/match
Run Code Online (Sandbox Code Playgroud)
(请注意,我使用了一个假网址,但该命令可以使用真正的网址)
接收端(在Flask中运行)执行此操作:
@app.route("/match", methods=['POST'])
def tagmatch():
query = json.loads(request.form['query'])
tags = query.get('tags')
... does stuff ...
return json.dump(stuff)
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
我觉得我错过了一些小的东西,任何帮助都会受到赞赏.
谢谢
Gou*_*eau 25
在http://curl.trillworks.com上有一个很棒的开源cURL到Python请求转换助手.它并不完美,但在很多时候都有帮助.特别是用于转换Chrome"Copy as cURL"命令.如果您需要以编程方式进行转换,还有一个节点库

您的服务器期待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
Run Code Online (Sandbox Code Playgroud)
尝试使用uncurl库。能完成它的工作真是太好了。我试过了。
u = uncurl.parse(
"curl -X GET 'https://mytesturl.com/' -H 'accept: application/json' -H 'Authorization: 1234567890'")
print(u)
Run Code Online (Sandbox Code Playgroud)
它打印,
requests.get("https://mytesturl.com/",
headers={
"Authorization": "1234567890",
"accept": "application/json"
},
cookies={},
)
Run Code Online (Sandbox Code Playgroud)
小智 5
拯救你的生命
一个更简单的方法是:
希望这可以帮助!
图片来源:Onkaar Singh
| 归档时间: |
|
| 查看次数: |
23936 次 |
| 最近记录: |