2014-01-12 20 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