圖片域名升級為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);

 

 

當然或許還有其它更好的解決方案,我這只是比較簡單的

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM