我需要在Java中使用IPv4地址(String或InetAddress对象 - 一个没问题)创建一个http或https URL对象。我现在已经在这10个小时了。
尝试碰到下面描述的墙:
尝试#1:我尝试通过组合字符串来制作URL,然后将其提供给URL构造函数。
URL a = new URL("http://151.101.65.69");
并打开到此URL的流(a
)会出现HTTP错误500(内部服务器错误 - 服务器不知道如何处理的意外情况) URL a = new URL("http://stackoverflow.com");
有效。尝试#2:我尝试使用InetAddress类中的“getHostName()”方法对IP地址进行反向查找。
我想弄清楚如何使用IP地址打开网站。看起来我的浏览器遇到了与我的代码相同的问题。我读了How to access site through IP address when website is on a shared host?,但我没有任何用户名,因为我希望能够打开用户拥有IP地址的任何网站。添加端口(例如80)似乎不起作用;也不会将用户名留空或使用通用的“用户”或“访客”。
我需要从IPv4 String或InetAddress对象创建一个URL对象,我被困住了。我知道像你这样知识渊博的程序员可能会说从IP地址制作URL不是IP地址的用途,或者指出我没有包含URL的文件部分,但这不是问题。你能帮助我解决我的核心挑战吗?
答案 0 :(得分:1)
以下代码适用于我。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.UnknownHostException;
public class InetAddressMain {
public static void main(String[] args) {
try {
InetAddress addr = InetAddress.getByName("172.217.4.110");
URL url = new URL("http://"+addr.getHostAddress());
InputStream is = url.openStream();
InputStreamReader isReader = new InputStreamReader(is);
BufferedReader reader = new BufferedReader(isReader);
String line;
while((line = reader.readLine()) != null){
System.out.println(line);
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
<强>输出:强>
&lt;!doctype html&gt;&lt; html itemscope =“”itemtype =“http://schema.org/WebPage”lang =“en”&gt;&lt; head&gt;&lt; meta content =“搜索世界的信息,包括网页,图片,视频等.Google有许多特殊功能可以帮助您找到您想要的内容。“ ... [缩短了可读性的输出]
答案 1 :(得分:0)
答案由D.B.提供。很好。我有非常相似的代码;但是你会发现这段代码每次都不起作用。您传递给代码的IPv4地址是D.B.的答案,它无法打开URL流(例如stackoverflow的IP地址)。我认为问题是我的编码,这就是我希望在stackoverflow上获得帮助。但我现在意识到问题是在提出这个问题时我缺乏理解。我现在理解的是,拥有IPv4地址不足以打开网络上的每个网站。只要服务器托管多个网站,IP地址就可以用来连接服务器,但不能同时识别我们想要打开/访问的网站。这位先生很好地解释了这一点:http://ask-leo.com/why_doesnt_accessing_a_site_by_its_ip_address_work.html
@ D.B。感谢您抽出宝贵时间提供帮助。非常感谢!