图片域名升级为https之后无法用HttpURLConnection获取输入流(InputStream)的解决方法

最近公司里的域名都升级https包括图片域名,之后就陆续出现了一些问题,其中包括无法在java代码中用HttpURLConnection访问图片路径后获取输入流:InputStream(即使获取到了,InputStream里面的值都是无效的)。

百度查找后换了几种方法试了都不行,最后我就在想是不是跟https访问有关,之后我就把图片域名设置成即可以用http访问也可以用https访问,然后再用HttpURLConnection来访问图片路径,访问时图片路径用的是http,运行代码之后果然可以获取到图片的输入流了,然后我又试了下把http改成https,再运行代码还是获取不了。

下面就是怎么设置即可以用https访问也可以用http访问:

1、首先在 nginx 配置文件中把 ssl on;  这一行注释掉或者删除了

# ssl on; 表示开启https,开启了之后只允许https访问,不允许http访问

2、重启 nginx 即可使用http和https访问了

 

具体用 HttpURLConnection 访问的代码如下:

 

URL url = new URL("http://img.alicdn.com/simba/img/TB1l_ulPpXXXXc8XVXXSutbFXXX.jpg");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            
connection.setRequestMethod("GET");
connection.setConnectTimeout(15000);
connection.setReadTimeout(15000);
connection.connect(); //访问图片
DataInputStream dis = new DataInputStream(connection.getInputStream());
Image firstImg = ImageIO.read(dis);//将图片                                                                    //获取图片的长和高
Integer firstImgWidth = firstImg.getWidth(null);
Integer firstImgHeight = firstImg.getHeight(null);

 

 

当然或许还有其它更好的解决方案,我这只是比较简单的

 

posted on 2017-02-21 11:58  zxc旭  阅读(4473)  评论(0编辑  收藏  举报