Why am I getting “HTTP Error 405: Method Not Allowed” when requesting 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 am getting 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 anyone let me know whats happening here and why its not working

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

Answers


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

By passing in the path portion of your URL as the Request object data parameter you are making this a POST instead of a GET.

I suspect you wanted to send a GET request instead:

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

Need Your Help

Does this function compute convolution correctly?

python numpy matrix convolution

I need to write a basic function that computes a 2D convolution between a matrix and a kernel.

implementing BigPipe for .NET to improve performance

.net performance scalable

a very cool article on how facebook breaks up their page into "pagelets" to maximize the work done by the server and browser when building a complex page that grabs various resources (ads, feeds, f...