servlet无法从http服务器读取图像

时间:2012-02-14 06:42:41

标签: java image tomcat servlets

我有一个来自远程服务器的图像通过http url。我想对此做一些图像分析,所以我想在我的服务器端java代码中读取图像内容。此代码在tomcat服务器内运行。

    public ImageTrimmer(String urlPath) {
        imageSrc = urlPath;
        try {
           Image img = ImageIO.read(new URL(imageSrc));  // throws the exception
            img.getRGB(0, 0);
        } catch (IOException e) {
            throw new RuntimeException( "Problem reading image", e );
        }
    }

图片的网址可以是返回图片的任何有效网址。一个示例url路径是 - “http://build.ford.com/dig/Ford/E-Series Cargo Van / 2012 / BP3TT-FULL-EXT / Image [| Ford | E-Series Cargo Van | 2012 | 1 | 1. |。.E1E..YZ ... 89E.BS1.CB1] / EXT / 1 / vehicle.png”

以下是我在阅读图片时获得的例外

java.io.IOException: Server returned HTTP response code: 505 for URL: http://build.ford.com/dig/Ford/E-Series Cargo Van/2012/BP3TT-FULL-EXT/Image[|Ford|E-Series Cargo Van|2012|1|1.|.E1E..YZ...89E.BS1.CB1.]/EXT/1/vehicle.png

        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1436)
        at java.net.URL.openStream(URL.java:1010)
        at javax.imageio.ImageIO.read(ImageIO.java:1367)

任何成功阅读此图片的帮助都会非常有用。

2 个答案:

答案 0 :(得分:0)

在浏览器中输入时,浏览器可以帮助您完成一些工作。要访问它,请先尝试对代码中的url进行编码(以逃避某些特定字符,如/,空白)。一个可选的API是,

URLEncoder.encode(为arg0)

答案 1 :(得分:0)

可能是Tomcat在URL中的空白处窒息。尝试将String urlPath编码为Tomcat可以理解的内容。

String encodedPathURL;
try
{
  encodedPathURL = java.net.URLEncoder().encode(urlPath, "UTF-8");
}
catch(UnsupportedEncodingException exception)
{
  //Exception handling here
}

并在调用ImageIO.read(新URL(encodedPathURL))时使用正确编码的String encodedPathURL。