2014-01-12 51 views
8

HTTP POST請求我試過如下:如何使與grequests

import grequests 

urls = ['http://localhost/test', 'http://localhost/test'] 

params = {'a':'b', 'c':'d'} 
rs = (grequests.post(u, params) for u in urls) 
grequests.map(rs) 

但它說以下內容:

File "search.py", line 6, in <genexpr> 
rs = (grequests.post(u, params) for u in urls) 
TypeError: __init__() takes exactly 3 arguments (4 given) 

我還需要傳遞給處理回調的響應。

+0

你能不能給錯誤消息的確切行號?我沒有看到你的代碼中的任何地方,你用4個參數調用某個東西。 – jknupp

+0

它在行號6中。我用錯誤信息更新了問題。 – Crypto

回答

20

grequests.post()函數只接受一個位置參數,即您向其發送POST請求的URL。剩下的參數被當作關鍵字參數。

所以你需要調用grequests.post()爲:

import grequests 

urls = ['http://localhost/test', 'http://localhost/test'] 

params = {'a':'b', 'c':'d'} 
rs = (grequests.post(u, data=params) for u in urls) 
grequests.map(rs) 
+0

我試過了,它將參數追加到URL中,而不是在內容主體中發送它。 – Crypto

+2

您需要使用「數據」而不是「參數」來發送POST請求。 data = params – praveen

+0

確實'data'有效嗎? – praveen