2012-07-12 14 views
7

मैं अजगर में urllib2 और urllib पुस्तकालयों का उपयोग कर रहाurllib2 का उपयोग कर यूआरएल का अनुरोध करते समय मुझे "HTTP त्रुटि 405: विधि अनुमत नहीं" क्यों मिल रहा है?

लगता है मैं निम्नलिखित कोड

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 

था जब मैं ऊपर कोड मैं

किसी को भी दे सकते हैं निम्न त्रुटि

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 
हो रही है चलाने मुझे पता है कि यहाँ क्या हो रहा है और यह क्यों काम नहीं कर रहा है

अग्रिम धन्यवाद ............

+0

@Paul: संपादन –

उत्तर

13

जो सर्वर आप कॉल कर रहे हैं वह आपको बता रहा है कि उस URL के लिए POST विधि की अनुमति नहीं है जिसे आप कॉल करने का प्रयास कर रहे हैं।

Request ऑब्जेक्ट डेटा पैरामीटर के रूप में अपने यूआरएल के पथ हिस्से में गुजरकर आप इसे जीईटी के बजाय एक पोस्ट बना रहे हैं।

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

के लिए बहुत धन्यवाद मुझे लगता है कि utf-8 urlencoding यह एक समस्या है, हालांकि हो सकता है बिना यूआरएल एन्कोडिंग

मैं आप के बजाय एक GET अनुरोध भेजना चाहते थे संदेह है। – geoffspear

+0

@Wooble: ओपी में से एक के साथ नहीं। –

+0

अच्छा, सच है, हालांकि उस उदाहरण में '.encode (' utf-8 ')' एक नो-ओप है क्योंकि यह पहले से ही सभी ASCII है और वही रहेगा। – geoffspear

संबंधित मुद्दे