2014-02-07 47 views
0

我试图通过发送json数据来调用rest api。 curl命令非常直截了当,但我面临的问题是使用“--data”参数。使用python请求发送数据参数以休息api

curl -X POST -H <headers> --data 'params={...}' <url> 

我无法弄清楚如何与使用python-请求连接到它的名字'params='发送--data参数:

对于卷曲,如下数据被发送。

此外,在发出GET请求时,还有很多选项需要与curl requests(-O ,-J, -v, -G,-L)一起发送。

我想知道如何使用python-requests提供这些附加参数。

谢谢。

+0

你有兴趣在URL中发送请求参数吗?我指的是以下网址的大胆位:something.com/get? ** key2 = value2&key1 = value1 ** – mbatchkarov

回答

0

curl是一个非常丰富的图书馆,经过了过去几十年的很多发展,已经走过了很长的路。与curl相比,python的requests库仍然是一个宝贝。因此,您不能期望requests中的curl的所有功能。您只会在requests中获得curl的主要功能。

现在来你的问题。如果你想通过一个变量发送json数据,那么基本的POST操作(content-type application/x-www-form-urlencoded)将会执行。

payload = {'params': json_string} 
r = requests.post("http://url/post", data=payload) 

但是,如果你想与头部的内容类型为JSON张贴数据作为JSON对象,那么你就必须使用这个

headers = {'content-type': 'application/json'} 
r = requests.post(url, data=json_string, headers=headers) 

在卷曲帕拉姆-L手段以下重定向。你可以用allow_redirects=True参数实现它:

r = requests.post(url, data=json_string, headers=headers, allow_redirects=True) 

帮助自己从请求document找到您的需求。

+0

嗨Sabuj,感谢您的意见。尽管这对我没有多大帮助。但是我最终执行了os.system()函数中的curl命令。使用它我也能够查看curl命令的响应。 python中有一个子进程库,推荐使用os.system()。但我还没有想到如何使用子进程库访问响应头文件(python-requests具有可用于相同的响应对象的头文件属性)。无论如何感谢您的回复。这是信息。干杯! – user1882391

+0

那里有小编辑。我没有使用os.system()从curl命令查看响应头。我只得到了答复。自从我参与多个项目以来,我有点困惑。一个使用python-requests,另一个使用os.system()。谢谢。 – user1882391