requests.post给出204但是curl和os.system运行得很好

时间:2014-07-31 18:58:04

标签: python curl subprocess python-requests

我正在尝试使用python获取http post请求的响应。我使用的是Python 2.7.3 我需要得到我发出的http post请求的响应。 我尝试使用请求模块执行以下操作:

import requests
import urllib
url = "http://"+server+":"+port+"/myService"
data = urllib.urlencode({'name':name, 'description':description, 'tags': tags, 'status': status})
response = requests.post(url, data = data)

为此,我收到了204回复。但终端的curl命令运行得很好。所以我尝试使用os.system来运行curl命令,这很好用。但问题是,现在我无法获得响应状态。 os.system返回0。 我也尝试使用subprocess模块

import subprocess
params = "name="+name+"&tags="+tags+"&description="+description+"&status="+status
proc = subprocess.Popen(['curl', '-X', 'POST', '-d', 
                                params, url], stdout=subprocess.PIPE)
(out, err) = proc.communicate()
print out

为此,它打印以下内容:

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                             Dload  Upload   Total   Spent    Left  Speed
100   101    0     0  100   101      0   1712 --:--:-- --:--:-- --:--:--  1741

打印out不打印任何内容。请帮忙。

1 个答案:

答案 0 :(得分:3)

引用HTTP/1.1 standard

  
    

10.2成功2xx

         

此类状态代码表示客户端的请求已成功接收,理解和接受。

         

...

         

10.2.5 204无内容

         

服务器已完成请求但不需要返回实体正文...

  

你的POST在每个意义上都是成功的。