根据URL获取图片
背景:今天因为生产环境的系统界面图片无法显示被领导叼了一波,之前用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。