Sockets 打开URL连接在本地工作区上有效,但在unix设备上无效

Sockets 打开URL连接在本地工作区上有效,但在unix设备上无效,sockets,http,firewall,urlconnection,Sockets,Http,Firewall,Urlconnection,以下是我在office的本地工作区上执行时运行完全正常的代码: URL url = new URL(getImageUrl()); InputStream inputStream = url.openStream(); BufferedImage originalImage = ImageIO.read(inputStream); getImageUrl返回可在网络中访问的简单url- 我从中读取的资源是一个http url—一个简单的get操作 此图像很容易加载到前端。然而,当尝试在spri

以下是我在office的本地工作区上执行时运行完全正常的代码:

URL url = new URL(getImageUrl());
InputStream inputStream = url.openStream();
BufferedImage originalImage = ImageIO.read(inputStream);
getImageUrl返回可在网络中访问的简单url-

我从中读取的资源是一个http url—一个简单的get操作

此图像很容易加载到前端。然而,当尝试在springboot后端项目中连接它时,由于上面的代码,它失败了

我可以直接在办公室网络中访问此图像

但是,当我将java jar上传到unix框中并运行服务项目时,此代码失败,可能是连接超时异常,也可能是“无法从URL获取输入流!”

不知道为什么它在不同的环境中会有不同的行为——这两种环境都在办公网络中

操作系统在这里重要吗?当我从windows移动到unix操作系统以运行同一个项目时,是否需要使用一些编码

我得到的例外是:

java.net.ConnectException: Connection timed out
        at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_71]
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_71]
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_71]
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_71]
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_71]
        at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_71]
        at java.net.Socket.connect(Socket.java:538) ~[na:1.8.0_71]
        at sun.net.NetworkClient.doConnect(NetworkClient.java:180) ~[na:1.8.0_71]
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:432) ~[na:1.8.0_71]
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:527) ~[na:1.8.0_71]
        at sun.net.www.http.HttpClient.<init>(HttpClient.java:211) ~[na:1.8.0_71]
        at sun.net.www.http.HttpClient.New(HttpClient.java:308) ~[na:1.8.0_71]
        at sun.net.www.http.HttpClient.New(HttpClient.java:326) ~[na:1.8.0_71]
        at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1169) ~[na:1.8.0_71]
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1105) ~[na:1.8.0_71]
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:999) ~[na:1.8.0_71]
        at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:933) ~[na:1.8.0_71]
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1513) ~[na:1.8.0_71]
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441) ~[na:1.8.0_71]
        at java.net.URL.openStream(URL.java:1045) ~[na:1.8.0_71]
java.net.ConnectException:连接超时
在java.net.PlainSocketImpl.socketConnect(本机方法)~[na:1.8.0_71]
在java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)~[na:1.8.071]
在java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)~[na:1.8.071]
在java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)~[na:1.8.071]
在java.net.socksocketimpl.connect(socksocketimpl.java:392)~[na:1.8.071]
在java.net.Socket.connect(Socket.java:589)~[na:1.8.071]
在java.net.Socket.connect(Socket.java:538)~[na:1.8.071]
在sun.net.NetworkClient.doConnect(NetworkClient.java:180)~[na:1.8.0\u 71]
在sun.net.www.http.HttpClient.openServer(HttpClient.java:432)~[na:1.8.0\u 71]
在sun.net.www.http.HttpClient.openServer(HttpClient.java:527)~[na:1.8.0\u 71]
在sun.net.www.http.HttpClient.(HttpClient.java:211)~[na:1.8.0\u 71]
在sun.net.www.http.HttpClient.New(HttpClient.java:308)~[na:1.8.071]
在sun.net.www.http.HttpClient.New(HttpClient.java:326)~[na:1.8.071]
在sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1169)~[na:1.8.071]
在sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1105)~[na:1.8.071]
在sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:999)~[na:1.8.071]
在sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:933)~[na:1.8.071]
在sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1513)~[na:1.8.0\u 71]
在sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)~[na:1.8.071]
在java.net.URL.openStream(URL.java:1045)~[na:1.8.0_71]
这可能是一个防火墙问题,但只是想确定我使用ImageIO类的方式是否有任何错误


此外,这是网络/计算机管理员/超级用户可以解决的问题吗?

两台计算机都在办公网络内这一事实并不意味着它们都可以访问(例如不同的DNS或防火墙规则等)

您应该选中可以下载映像的框,从而从终端(在linux框上)运行:


您可能会得到与主机配置错误相同的错误,而不是Java。

返回什么?一个简单的图像url-htttp.someurl.pngCheck如果您能够在代码之外访问unix环境中的链接,可能使用
wget
返回什么?这是文件路径还是HTTP URL?如果是文件,是否检查您是否有权读取该文件?您在UNIX框上看到的错误/异常是什么?如果正在读取的资源在Jar中,则需要将其作为类路径资源读取。请添加所有详细信息,以便正确回答您的问题。该资源可以作为直接url更新的描述提供,没错。它不断地自我重试wget url.pngWhat's the solution虽然,任何想法?开始检查DNS;假设您的URL是“”,从您的工作站获取www.example.com的IP,并从您的linux设备ping它。如果无法访问,您必须与系统管理员联系以修复它;如果它随后将这一行(例如:
127.0.0.1 www.example.com
添加到/etc/hosts on linux box中(您需要具有root权限)并重试。好的,但前端加载相同的UI(它再次部署在类似的unix框中)并不奇怪。如果我在这个unix框中执行wget,则再次需要永远连接到此url)由于不同的原因,主机配置可能会非常不同(例如:开发、qa、产品环境)
wget http://typeOffendingURL.png