diff --git a/scrapy/trunk/scrapy/http/request/rpc.py b/scrapy/trunk/scrapy/http/request/rpc.py index 269426261..6e31159e8 100644 --- a/scrapy/trunk/scrapy/http/request/rpc.py +++ b/scrapy/trunk/scrapy/http/request/rpc.py @@ -15,6 +15,13 @@ class XmlRpcRequest(Request): def __init__(self, *args, **kwargs): params = kwargs.pop('params') methodname = kwargs.pop('methodname') + + # spec defines that requests must use POST method + kwargs.setdefault('method', 'POST') + + # xmlrpc query multiples times over the same url + kwargs.setdefault('dont_filter', True) + Request.__init__(self, *args, **kwargs) self.body = xmlrpclib.dumps(params, methodname) self.headers.setdefault('Content-Type', 'text/xml') diff --git a/scrapy/trunk/scrapy/tests/test_http_request.py b/scrapy/trunk/scrapy/tests/test_http_request.py index b46645585..6a766c214 100644 --- a/scrapy/trunk/scrapy/tests/test_http_request.py +++ b/scrapy/trunk/scrapy/tests/test_http_request.py @@ -189,6 +189,8 @@ class XmlRpcRequestTest(unittest.TestCase): r = XmlRpcRequest('http://scrapytest.org/rpc2', methodname='login', params=('username', 'password')) self.assertEqual(r.headers['Content-Type'], 'text/xml') self.assertEqual(r.body, "\n\nlogin\n\n\nusername\n\n\npassword\n\n\n\n") + self.assertEqual(r.method, 'POST') + self.assertTrue(r.dont_filter, True) if __name__ == "__main__":