Url无法在atspace Web服务器上的图像上打开流

时间:2014-01-26 07:24:09

标签: java image javax.imageio

注意:如果这是一个愚蠢的问题,我很抱歉,我是网络服务器互动的新手,我还没有在网上找到任何有用的信息来帮助解决这个问题。

我正在尝试使用以下代码从Web服务器安装映像:

public static void main(String args[]){
    try {
        BufferedImage image = ImageIO.read(new URL("http://medialink.atspace.cc/uploads/murphy/apple.jpg"));
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

此代码出现以下错误:

javax.imageio.IIOException: Can't get input stream from URL!
at javax.imageio.ImageIO.read(Unknown Source)
at MediaLinkMain.main(MediaLinkMain.java:24)
Caused by: java.io.IOException: Server returned HTTP response code: 500 for URL: http://medialink.atspace.cc/uploads/murphy/apple.jpg
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.URL.openStream(Unknown Source)
... 2 more

图片位于我在atspace.com上的子域名中。相同的代码,例如地址为https://www.google.com/images/srpr/logo11w.png

的google徽标图片

默认情况下,atspace在其托管设置下有一个名为“目录保护”的设置。在禁用之前我奇怪地无法在地址(http://medialink.atspace.cc/uploads/murphy/apple.jpg)上查看图像,除非我将其添加到网页,然后右键单击+按下的视图图像。

您可能还需要注意使用以下代码:

URL url = new URL(addr + "/list.dat");
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
for(String line = reader.readLine(); line != null; line=reader.readLine()){
    //Use data here
}

对于与图像完全相同的目录中的文件运行没有问题。

2 个答案:

答案 0 :(得分:0)

服务器返回响应代码500.这意味着存在服务器错误。 当您尝试在浏览器中打开该URL时,也可以看到。

必须在服务器端解决问题。

答案 1 :(得分:0)

正如@Henry所说:

  

必须在服务器端解决问题。

服务器的HTTP 500错误消息显示:

Premature end of script headers: f403.php

基于有根据的猜测,我会说这不是真正的问题,但是你最初会得到一个HTTP 403“Forbidden”返回状态,但403的错误处理程序状态(f403.php)被破坏,从而导致500错误。

如果真正的问题确实是HTTP 403状态,您可能没有正确设置图像的文件权限。

不确定错误处理程序是你的,还是你的ISP,在后一种情况下你应该告诉他们这个问题。

PS:服务器的500状态页面还列出了最常见的错误情况,您也应该阅读它们。