根据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。
根据URL获取图片的更多相关文章
- iOS根据Url 获取图片尺寸
iOS根据Url 获取图片尺寸 // 根据图片url获取图片尺寸 +(CGSize)getImageSizeWithURL:(id)imageURL { NSURL* URL = nil; if([i ...
- 根据Url 获取图片尺寸 iOS
// 根据图片url获取图片尺寸 +(CGSize)getImageSizeWithURL:(id)imageURL { NSURL* URL = nil; if([imageURL ...
- iOS开发——根据Url 获取图片尺寸
转自:http://www.oschina.net/code/snippet_2248391_53038 // 根据图片url获取图片尺寸 +(CGSize)getImageSizeWithURL:( ...
- C# url获取图片流转字符串
//http url获取图片流转字符串 //string url = serverUrl.TrimEnd('/') + PUrl; //WebRequest request = WebRequest. ...
- 使用Python和OpenCV通过网址URL获取图片
在OpenCV中通过图片的URL地址获取图片: # -*- coding: utf-8 -*- import numpy as np import urllib import cv2 # URL到图片 ...
- [django]用requests从url获取图片(数据类型是bytes)后如何在template中显示出来
今天在做一个注册页面的时候遇到了一个验证码图片在页面显示的问题. 我用requests从一个url上获取到一张图片, 没有保存到本地, 而是想直接作为render的字典参数,传到页面里进行渲染.因为r ...
- 通过url获取图片尺寸的几种方法:JS和php
首先是js的方法,通过new一个Image对象,设置src属性,并监听complete和onload事件,图片加载完成后输出图片的宽度和高度 function checkPicurl(url){ va ...
- 根据图片URL获取图片的尺寸【Swift语言实现】
import UIKit extension UIImage { /// 获取网络图片尺寸 /// /// - Parameter url: 网络图片链接 /// - Returns: 图片尺寸siz ...
- 从URL获取图片并保存到本地
/// <summary> /// HttpWebRequest Property /// </summary> /// <param name="fileNa ...
随机推荐
- 改造MIP获得搜索青睐,轻松完成SEO
搜索引擎目标及页面排序方法 搜索引擎作为互联网流量的入口,承担着流量分发的职责.但排序成千上万的网页,决定哪些网页在第一页,是由网页本身的用户体验决定的.权重算法会从内容优质性,广告多少,加载速度等多 ...
- 干货,分享一次完整的CentOS升级内核脚本。
一.安装常用包 yum install wget vim screen net-tools lrzsz -y wget -O /etc/yum.repos.d/epel.repo http://mir ...
- Fastjson 1.2.22-24 反序列化漏洞分析
目录 0x00 废话 0x01 简单介绍 FastJson的简单使用 0x02 原理分析 分析POC 调试分析 0x03 复现过程 0x04 参考文章 0x00 废话 balabala 开始 0x01 ...
- Java:基于MD5的文件监听程序
前述和需求说明 和之前写的 Python:基于MD5的文件监听程序 是同样的功能,就不啰嗦了,就是又写了一个java版本的,可以移步 python 版本去看一下,整个的核心思路是一样的.代码已上传Gi ...
- 游戏AI之模糊逻辑(4)
目录 人类的逻辑 模糊变量 模糊集合 模糊规则 模糊推理 去模糊化 库博方法 结语 if(condition) then dosomething... 这次主要围绕的是游戏AI该如何模仿人类地判断条件 ...
- javascript入门篇(三)
字符串属性和方法 原始值字符串,如'liang', 没有属性和方法(因为他们不是对象). 原始值可以使用 JavaScript 的属性和方法,因为 JavaScript 在执行方法和属性时可以把原始值 ...
- jbpm - 工作流的基本操作
Jbpm流程引擎. 定义:jbpm,全称是Java Business Process Management(业务流程管理),他是覆盖了业务流程管理,工作流管理,服务协作等领域的一个开源的,灵活的,易扩 ...
- swagger Failed to load Api definition 的问题
这个问题是由于Tomcat乱码问题导致的,修改server.xml文件的编码格式修改成UTF-8
- 文件进行MD5计算
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Python之路【第四篇】:Python基础之函数
函数的理解 面向过程:根据业务逻辑从上到下垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 函数作用是你的程序有良好的扩展性.复用性. 同样的功能要是用3次以上的话就建议使 ...