getByName是否适用于包含https://stackoverflow.com/questions之类路径的链接,或者链接是否必须仅包含主机(https://stackoverflow.com)?
当我使用包含“/”的链接时,我会收到unknownHostException,有关如何解决该问题的提示吗?
控制台说错误在于:
socket = new Socket(InetAddress.getByName(adr), port);
提前致谢,对不好的英语感到抱歉,因为这不是我的第一语言。
答案 0 :(得分:5)
InetAddress.getByName
查找名称(通常在DNS中)并返回相应的地址。
没有主持人叫" https://stackoverflow.com/questions"所以抛出一个UnknownHostException
没有主持人称为" https://stackoverflow.com"无论是。
在此特定示例中,主机名是" stackoverflow.com"。
如果您要解析网址(例如" https://stackoverflow.com/questions")以获取主机名,则可以使用java.net.URL
类:
String hostname = new URL("https://stackoverflow.com/questions").getHost();
System.out.println(hostname); // stackoverflow.com