2012-07-12 3 views
7

내가 파이썬에서 urllib2가와 URLLIB 라이브러리를 사용하고 urllib2를 사용하여 URL을 요청할 때 "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

@ 폴 : 편집 –

답변

13

전화하려는 서버가 호출하려는 URL에 POST 방법이 허용되지 않는다고 알려줍니다.

URL의 경로 부분을 Request 개체 데이터 매개 변수로 전달하면 GET 대신 POST가됩니다.

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

주셔서 대단히 감사합니다 내가 UTF-8는하지만, 문제가있을 수 있습니다에는 urlencoding없이 URL을 인코딩 의심

난 당신이 대신 GET 요청을 보낼 싶어 생각한다. – geoffspear

+0

@Wooble : OP에있는 것과 다릅니다. –

+0

사실,이 예제에서 .encode ('utf-8')는 이미 모든 ASCII이므로 그대로 유지됩니다. – geoffspear

관련 문제