簡體   English   中英

為什么我在使用 urllib2 請求 URL 時收到“HTTP 錯誤 405:方法不允許”?

[英]Why am I getting “HTTP Error 405: Method Not Allowed” when requesting a URL using urllib2?

我在 python 中使用 urllib2 和 urllib 庫

假設我有以下代碼

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

誰能告訴我這里發生了什么以及為什么它不起作用

提前致謝............

您正在調用的服務器告訴您您嘗試調用的 URL 不允許使用 POST 方法。

通過將 URL 的路徑部分作為Request對象數據參數傳遞,您可以將其設為 POST 而不是 GET。

我懷疑您想改為發送 GET 請求:

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

我得到它是因為來自ppa:deadsnakes的 Python 3.7 在 Ubuntu Trusty 包中不支持 SSL “解決方案”是降級到 Python 3.6。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM