背景:今天因為生產環境的系統界面圖片無法顯示被領導叼了一波,之前用Hutool工具類解析URL獲取圖片的,在生產環境上跑了一個多月都正常,嘣,今天突然發現周六下午后的圖片統統顯示異常,之后改為用java原始HttpConnection的方式解析URL獲取圖片OK。
簡單的說下項目的業務邏輯&我當事人的想法:
1、首先,這個URL圖片地址是項目上游合作伙伴通過消息隊列發送給我的,然后我再把URL轉為base64,接着把轉好的base64上傳到一個文件存儲服務器中,這時可以通過Key和Object的組合從文件服務器中下載以上傳的圖片,然后就利用WebSocket推送Key和Object的值給前端請求展示圖片;
2、為什么我要用Hutool工具類呢?因為用它把URL轉換為base64就一行代碼搞定,兩行算我輸;
3、為什么之前用Hutoo可以,過了一個多月就突然涼涼了呢?這也是我蛋疼的地方,為了保密一些,下面URL部分是假的;
之前合作伙伴給我提供的URL格式如:image_url:https://xxxxxx.com:666/xxxxxxxx/xxxx/xxpic/xxxxxxxxxx
如今合作伙伴給我提供的URL格式如:image_url:https://xxxxxx.com:666/xxxxxxxx/xxxx/xxpic/xxxxxxxxxx?AWSAccessKeyId=XXXXX&Expires=xxxx&Signature=xxxxx
小老弟們一看就知道現在的URL增加了簽名和失效時間等信息,然后我那Hutool就玩不動了(求大神指導)。
4、雖然上游的合作伙伴沒有提前告知我他們給我的URL格式內容變了,但這也不能怪他們,因為他們提供的這個地址在瀏覽器中訪問的的確確可以得到一串base64字節碼,並且這串base64也可以在瀏覽器正常轉化為圖片顯示,最重要的是用HttpConnection解析該URL結果也OK,那么八成就是我代碼的問題了;
5、雖然這個問題算是我的鍋,但是被痛叼了一波,還是有點不服,奈何外包公司就是這樣“沒能力好好干,有能力給我滾蛋”!過完春節不辭職算我輸(求收留)。
FYI:
如圖所示,Java本身提供的原始HttpURLConnection方法可以解析加了簽名的URL,SO溫馨提示大家以后可以慎用Hutool工具類,同時也希望走過路過的朋友可以指導一波,怎么用Hutool解析URL獲取圖片base64。