Python请求-没有连接适配器

我正在使用请求:HTTP for human库,我得到了这个奇怪的错误,我不知道这是什么意思。

No connection adapters were found for '192.168.1.61:8080/api/call'

有人知道吗?

289170 次浏览

你需要包括协议方案:

'http://192.168.1.61:8080/api/call'

如果没有http://部分,requests就不知道如何连接到远程服务器。

注意协议方案必须全部小写;例如,如果你的URL以HTTP://开头,它也不会找到http://连接适配器。

还有一个原因,也许你的url包含了一些隐藏字符,比如“\n”。

如果你像下面这样定义你的url,这个异常会引发:

url = '''
http://google.com
'''

因为有'\n'隐藏在字符串中。url实际上变成:

\nhttp://google.com\n

在我的例子中,我收到了这个错误当我重构一个url时,留下一个错误的逗号,从而将我的url从字符串转换为元组。

我的准确错误信息是:

    741         # Nothing matches :-/
--> 742         raise InvalidSchema("No connection adapters were found for {!r}".format(url))
743
744     def close(self):


InvalidSchema: No connection adapters were found for "('https://api.foo.com/data',)"

以下是这个错误是如何产生的:

# Original code:
response = requests.get("api.%s.com/data" % "foo", headers=headers)


# --------------
# Modified code (with bug!)
api_name = "foo"
url = f"api.{api_name}.com/data",  # !!! Extra comma doesn't belong here!
response = requests.get(url, headers=headers)




# --------------
# Solution: Remove erroneous comma!
api_name = "foo"
url = f"api.{api_name}.com/data"  # No extra comma!
response = requests.get(url, headers=headers)