Why am I getting the “HTTP Error 405: Method Not Allowed” message when I request a url using urllib2?

I am using urllib2 and urllib libraries in python

suppose i had the following code

import urllib2 import urllib url = 'http://ah.example.com' half_url = u'/servlet/av/jd?ai=782&ji=2624743&sn=I' req = urllib2.Request(url, half_url.encode('utf-8')) response = urllib2.urlopen(req) print response 

when i run the above code i get the following error

 Traceback (most recent call last): File "example.py", line 39, in <module> response = urllib2.urlopen(req) File "/usr/lib64/python2.7/urllib2.py", line 126, in urlopen return _opener.open(url, data, timeout) File "/usr/lib64/python2.7/urllib2.py", line 398, in open response = meth(req, response) File "/usr/lib64/python2.7/urllib2.py", line 511, in http_response 'http', request, response, code, msg, hdrs) File "/usr/lib64/python2.7/urllib2.py", line 436, in error return self._call_chain(*args) File "/usr/lib64/python2.7/urllib2.py", line 370, in _call_chain result = func(*args) File "/usr/lib64/python2.7/urllib2.py", line 519, in http_error_default raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) urllib2.HTTPError: HTTP Error 405: Method Not Allowed 

can someone tell me what is going on here and why its not working

Thanks in advance............

+7
source share
1 answer

The server you are calling tells you that the POST method is not allowed for the URL you are trying to call.

Passing in part of the path of your URL as the data parameter of the Request object, you do this POST instead of GET.

I suspect you wanted to send a GET request:

 req = urllib2.Request(url + half_url.encode('utf-8')) 
+13
source

All Articles