当前位置:首页 > 软件开放 > 正文内容

网址重定向代码(网址重定向是什么意思)

软件开放5个月前 (08-16)401

最近对接易企签,需要在用户签署完后把签名文件下载并存储到我们自己的文件存储中心,本来在测试环境和预发环境测试都都无问题,可是,上生产后,问题就来了

最开始下载文件的代码很简单

URL url = new URL(fileUrl);

InputStream is = url.openStream();

ByteArrayOutputStream baos = new ByteArrayOutputStream();

IOUtils.copy(is, baos);

测试环境中,易企签给的文件地址可以直接返回文件流,这种方式就下载小文件自然就没什么问题,可是,当发布到生产后,直接通过上面的代码就只能获取到下面这样的代码

pFound. Redirecting to a href="http://open.signit.cn/v1/file/public/resources/00941ed4-bd2a-4c82-8758-2eb3760b13ee?token=6777e9df-4068-4e57-9de3-37a9387f5170resourceName=h07Ah6zzLvtmQ6CL4s4D3qin.pdf"http://open.signit.cn/v1/file/public/resources/00941ed4-bd2a-4c82-8758-2eb3760b13ee?token=6777e9df-4068-4e57-9de3-37a9387f5170resourceName=h07Ah6zzLvtmQ6CL4s4D3qin.pdf/a/p

很明显,给的文件地址不再像预发环境那般单纯了,它会302重定向,这就不好意思了,上面的代码不能用,需要加强一下代码逻辑,判断响应状态码如果是302,再从请求头Location中取地址进行数据流的获取。正准备自己来处理的,突然想到项目中已经引入了强大的Hutool工具包,然后一句代码就OK了

byte[] fileByte = HttpUtil.downloadBytes(fileUrl);

展开全文

那么,为什么它一行代码就可以处理这个难题呢?我们来大概的看一下,首先进入到downloadBytes中

public static byte[] downloadBytes(String url) {

return HttpDownloader.downloadBytes(url);

}

最终可以跟到HttpUtil.createGet这个方法中

public static HttpRequest createGet(String url, boolean isFollowRedirects) {

return HttpRequest.get(url).setFollowRedirects(isFollowRedirects);

}

this.httpConnection = HttpConnection

.create(this.url.toURL(this.urlHandler), this.proxy)//

.setConnectTimeout(this.connectionTimeout)//

.setReadTimeout(this.readTimeout)//

.setMethod(this.method)//

.setHttpsInfo(this.hostnameVerifier, this.ssf)//

// 定义转发

.setInstanceFollowRedirects(this.maxRedirectCount 0)

// 流方式上传数据

.setChunkedStreamingMode(this.blockSize)

// 覆盖默认Header

.header(this.headers, true);

public HttpResponse execute(boolean isAsync) {

// 初始化URL

urlWithParamIfGet();

// 初始化 connection

initConnection();

// 发送请求

send();

// 手动实现重定向

HttpResponse httpResponse = sendRedirectIfPossible();

// 获取响应

if (null == httpResponse) {

httpResponse = new HttpResponse(this.httpConnection, this.charset, isAsync, isIgnoreResponseBody());

}

return httpResponse;

}

进行URL初始化后,手动设置重定向,其中maxRedirectCount是可重定向的次数,默认是2次。

private HttpResponse sendRedirectIfPossible() {

if (this.maxRedirectCount 1) {

// 不重定向

网址重定向代码(网址重定向是什么意思)

return null;

}

// 手动实现重定向

if (this.httpConnection.getHttpURLConnection().getInstanceFollowRedirects()) {

int responseCode;

try {

responseCode = httpConnection.responseCode();

} catch (IOException e) {

// 错误时静默关闭连接

this.httpConnection.disconnectQuietly();

throw new HttpException(e);

}

if (responseCode != HttpURLConnection.HTTP_OK) {

if (HttpStatus.isRedirected(responseCode)) {

setUrl(httpConnection.header(Header.LOCATION));

if (redirectCount this.maxRedirectCount) {

redirectCount++;

return execute();

}

}

}

}

return null;

}

其实它的实现方式也是上面我们提到的思路是一致的,通过递归方式去多次获取返回的请求头中的LOCATION地址,尝试获取最终的文件下载地址。现在这般简便的工具类越发的多,我们在使用的同时也需要去学习工具类类的实现思路。这样我们才不会越发被动。

扫描二维码推送至手机访问。

版权声明:本文由飞速云SEO网络优化推广发布,如需转载请注明出处。

本文链接:http://zspsrg.cn/post/119798.html

分享给朋友:

“网址重定向代码(网址重定向是什么意思)” 的相关文章

免费网站建设(免费建站系统哪个好)

免费网站建设(免费建站系统哪个好)

本篇文章给大家谈谈免费网站建设,以及免费建站系统哪个好对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、如何给自己免费建设一个网站 2、自己如何免费做网站 3、自己手机怎么免费做网站 如何给自己免费建设一个网站 很多人都想建立一个自己的网站,但如果是用作商业的网...

宁波软件开发公司(宁波软件开发公司招聘)

宁波软件开发公司(宁波软件开发公司招聘)

本篇文章给大家谈谈宁波软件开发公司,以及宁波软件开发公司招聘对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、宁波紫光兴业软件科技有限公司怎么样? 2、宁波金唐软件有限公司是外包吗 3、宁波世纪领航软件科技有限公司怎么样? 4、宁波超逸软件有限公司怎么样?...

梦幻西游藏宝阁手游交易平台(梦幻西游藏宝阁手游交易平台混服)

梦幻西游藏宝阁手游交易平台(梦幻西游藏宝阁手游交易平台混服)

今天给各位分享梦幻西游藏宝阁手游交易平台的知识,其中也会对梦幻西游藏宝阁手游交易平台混服进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、梦幻西游手游有藏宝阁吗 2、梦幻西游藏宝阁在哪里? 3、手游《梦幻》有藏宝阁吗? 4、梦幻西游藏宝阁在哪里...

齐家装修公司地址与电话?(齐家装修公司地址与电话查询)

齐家装修公司地址与电话?(齐家装修公司地址与电话查询)

本篇文章给大家谈谈齐家装修公司地址与电话?,以及齐家装修公司地址与电话查询对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、齐家装修怎么样? 2、齐家网推荐的装修公司靠谱吗? 3、江阴市澄江镇有什么规模大一点的装饰公司吗?有人知道吗?请求回话:地址和电话号码 4...

百度网盘企业加速券(百度网盘如何使用加速券)

百度网盘企业加速券(百度网盘如何使用加速券)

本篇文章给大家谈谈百度网盘企业加速券,以及百度网盘如何使用加速券对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、百度网盘怎么买五分钟加速券 2、百度网盘获取的倍速播放券没过期却用不了 3、百度网盘办了会员、买了加速券,这种下载速度,请问百度网盘是不是要倒闭了?...

手机游戏账号出售平台哪个好(有什么比较好的出售游戏账号的平台)

手机游戏账号出售平台哪个好(有什么比较好的出售游戏账号的平台)

本篇文章给大家谈谈手机游戏账号出售平台哪个好,以及有什么比较好的出售游戏账号的平台对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、手游账号交易平台哪个好,哪个平台比较安全?? 2、游戏账号出售平台哪个好 3、游戏账号在哪个网站交易比较好? 4、手游交易平台哪个...