2017-08-27 58 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):最新的对我来说可用的版本给了我一个不同的错误信息,这让我找到了答案,这个问题我有

相关问题