我正在使用Requests: HTTP for Humans库,我得到了这个奇怪的错误,我不知道这是什么意思。
No connection adapters were found for '192.168.1.61:8080/api/call'
有人知道吗?
我正在使用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://连接适配器。
还有一个原因,也许你的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)
正如christian-long的评论所述
由于后面有逗号,url可能会意外地成为一个元组
url = self.base_url % endpoint,
确保它是一个字符串