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

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

有人知道吗?


当前回答

你需要包括协议方案:

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

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

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

其他回答

正如christian-long的评论所述

由于后面有逗号,url可能会意外地成为一个元组

url = self.base_url % endpoint,

确保它是一个字符串

在我的例子中,我在重构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)

你需要包括协议方案:

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

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

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

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

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

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

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

\nhttp://google.com\n