2017-08-27 59 views
0

我試圖用這個URL請求執行GET:要求:無法將「NoneType」對象爲str隱含

http://g.api.mega.co.nz

請求時,給了我以下錯誤:

>>> r = requests.get("http://g.api.mega.co.nz") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python3/dist-packages/requests/api.py", line 67, in get 
    return request('get', url, params=params, **kwargs) 
    File "/usr/lib/python3/dist-packages/requests/api.py", line 53, in request 
    return session.request(method=method, url=url, **kwargs) 
    File "/usr/lib/python3/dist-packages/requests/sessions.py", line 468, in request 
    resp = self.send(prep, **send_kwargs) 
    File "/usr/lib/python3/dist-packages/requests/sessions.py", line 597, in send 
    history = [resp for resp in gen] if allow_redirects else [] 
    File "/usr/lib/python3/dist-packages/requests/sessions.py", line 597, in <listcomp> 
    history = [resp for resp in gen] if allow_redirects else [] 
    File "/usr/lib/python3/dist-packages/requests/sessions.py", line 195, in resolve_redirects 
    **adapter_kwargs 
    File "/usr/lib/python3/dist-packages/requests/sessions.py", line 576, in send 
    r = adapter.send(request, **kwargs) 
    File "/usr/lib/python3/dist-packages/requests/adapters.py", line 343, in send 
    conn = self.get_connection(request.url, proxies) 
    File "/usr/lib/python3/dist-packages/requests/adapters.py", line 250, in get_connection 
    proxy = select_proxy(url, proxies) 
    File "/usr/lib/python3/dist-packages/requests/utils.py", line 575, in select_proxy 
    proxy = proxies.get(urlparts.scheme+'://'+urlparts.hostname) 
TypeError: Can't convert 'NoneType' object to str implicitly 
>>> 

我在python2.7python3.5都測試了它給語義相同的錯誤。 我認爲長子域鏈給出了錯誤,但我反駁,通過我的服務器上有一個長的子域鏈測試與通配符DNS配置。

我可以host g.api.mega.co.nz看到網址是lu.api.mega.co.nz.

試圖存取權限該網址與curl --head和HTTP別名使我有以下幾點:

HTTP/1.1 301 Moved Permanently 
Content-Length: 0 
Location: https:// 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Headers: Content-Type, MEGA-Chrome-Antileak 
Access-Control-Expose-Headers: Original-Content-Length 
Access-Control-Max-Age: 86400 

當我嘗試存取權限以https,因爲301狀態碼的我得到一個空的答覆。

情節複雜。

+0

我無法打開鏈接 –

+0

你想在瀏覽器或repl? – zython

+1

我正在瀏覽器中嘗試 –

回答

0

此錯誤嚴格地說無效的位置,根據requests/urllib庫發生在服務失敗重定向到。

Simliar: LocationValueError when using python requests module


每次我遇到了這個服務提供HTTPS這原來是這個問題的根源。

在上例中,服務重定向到Location: https:// ,其中requests將解析導致錯誤的主機名爲None

在另一個例子中sensetime.com網址重定向到:

... 
< Connection: keep-alive 
< Location: https:www.sensetime.com/ 
< 
... 

其中的urllib cannnot解析(因爲缺少反斜槓和失敗

你應該做/我做了什麼:

  • 做一個包羅萬象的,把那些你遇到這樣的在一個單獨的地方,你可以處理他們的URL後通過HTTPS連接

  • 更新您的請求庫(pip install --upgrade requests):最新的對我來說可用的版本給了我一個不同的錯誤信息,這讓我找到了答案,這個問題我有

相關問題