欧美亚洲综合图区在线|天天射天天干国产成卜|99久久免费国产精精品|国产的欧美一区二区三区|日韩中文字幕无码不卡专区|亚麻成人aV极品一区二区|国产成人AV区一区二区三|成人免费一区二区三区视频网站

當(dāng)前位置:首頁 > 軟件開放 > 正文內(nèi)容

網(wǎng)址重定向代碼(網(wǎng)址重定向是什么意思)

軟件開放9個(gè)月前 (08-16)459

最近對接易企簽,需要在用戶簽署完后把簽名文件下載并存儲(chǔ)到我們自己的文件存儲(chǔ)中心,本來在測試環(huán)境和預(yù)發(fā)環(huán)境測試都都無問題,可是,上生產(chǎn)后,問題就來了

最開始下載文件的代碼很簡單

URL url = new URL(fileUrl);

InputStream is = url.openStream();

ByteArrayOutputStream baos = new ByteArrayOutputStream();

IOUtils.copy(is, baos);

測試環(huán)境中,易企簽給的文件地址可以直接返回文件流,這種方式就下載小文件自然就沒什么問題,可是,當(dāng)發(fā)布到生產(chǎn)后,直接通過上面的代碼就只能獲取到下面這樣的代碼

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

很明顯,給的文件地址不再像預(yù)發(fā)環(huán)境那般單純了,它會(huì)302重定向,這就不好意思了,上面的代碼不能用,需要加強(qiáng)一下代碼邏輯,判斷響應(yīng)狀態(tài)碼如果是302,再從請求頭Location中取地址進(jìn)行數(shù)據(jù)流的獲取。正準(zhǔn)備自己來處理的,突然想到項(xiàng)目中已經(jīng)引入了強(qiáng)大的Hutool工具包,然后一句代碼就OK了

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

展開全文

那么,為什么它一行代碼就可以處理這個(gè)難題呢?我們來大概的看一下,首先進(jìn)入到downloadBytes中

public static byte[] downloadBytes(String url) {

return HttpDownloader.downloadBytes(url);

}

最終可以跟到HttpUtil.createGet這個(gè)方法中

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)//

// 定義轉(zhuǎn)發(fā)

.setInstanceFollowRedirects(this.maxRedirectCount 0)

// 流方式上傳數(shù)據(jù)

.setChunkedStreamingMode(this.blockSize)

// 覆蓋默認(rèn)Header

.header(this.headers, true);

public HttpResponse execute(boolean isAsync) {

// 初始化URL

urlWithParamIfGet();

// 初始化 connection

initConnection();

// 發(fā)送請求

send();

// 手動(dòng)實(shí)現(xiàn)重定向

HttpResponse httpResponse = sendRedirectIfPossible();

// 獲取響應(yīng)

if (null == httpResponse) {

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

}

return httpResponse;

}

進(jìn)行URL初始化后,手動(dòng)設(shè)置重定向,其中maxRedirectCount是可重定向的次數(shù),默認(rèn)是2次。

private HttpResponse sendRedirectIfPossible() {

if (this.maxRedirectCount 1) {

// 不重定向

網(wǎng)址重定向代碼(網(wǎng)址重定向是什么意思)

return null;

}

// 手動(dòng)實(shí)現(xiàn)重定向

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

int responseCode;

try {

responseCode = httpConnection.responseCode();

} catch (IOException e) {

// 錯(cuò)誤時(shí)靜默關(guān)閉連接

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;

}

其實(shí)它的實(shí)現(xiàn)方式也是上面我們提到的思路是一致的,通過遞歸方式去多次獲取返回的請求頭中的LOCATION地址,嘗試獲取最終的文件下載地址?,F(xiàn)在這般簡便的工具類越發(fā)的多,我們在使用的同時(shí)也需要去學(xué)習(xí)工具類類的實(shí)現(xiàn)思路。這樣我們才不會(huì)越發(fā)被動(dòng)。

掃描二維碼推送至手機(jī)訪問。

版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請注明出處。

本文鏈接:http://www.landcheck.net/post/119798.html

“網(wǎng)址重定向代碼(網(wǎng)址重定向是什么意思)” 的相關(guān)文章

同花順免費(fèi)炒股軟件下載(同花順炒股軟件下載網(wǎng)址)

同花順免費(fèi)炒股軟件下載(同花順炒股軟件下載網(wǎng)址)

本篇文章給大家談?wù)勍樏赓M(fèi)炒股軟件下載,以及同花順炒股軟件下載網(wǎng)址對應(yīng)的知識(shí)點(diǎn),希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、想請問,同花順炒股軟件去哪里下? 2、買股票應(yīng)該下載什么軟件最好? 3、炒股軟件app排名 4、同花順手機(jī)炒股軟件怎么樣? 5、同花順股票分...

米哈游游戲交易平臺(tái)(米哈游官網(wǎng)賬號(hào)交易)

米哈游游戲交易平臺(tái)(米哈游官網(wǎng)賬號(hào)交易)

今天給各位分享米哈游游戲交易平臺(tái)的知識(shí),其中也會(huì)對米哈游官網(wǎng)賬號(hào)交易進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、交易貓米哈游換綁碼是什么 2、米哈游有沒有賬號(hào)交易平臺(tái) 3、原神號(hào)在哪才能買到? 4、米哈游有官方交易平臺(tái)嗎 5、米哈游實(shí)名認(rèn)...

朋友圈引流推廣文案(朋友圈引流推廣文案)

朋友圈引流推廣文案(朋友圈引流推廣文案)

今天給各位分享朋友圈引流推廣文案的知識(shí),其中也會(huì)對朋友圈引流推廣文案進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、我想請問一下怎么做引流?有那些可以幫助推廣的平臺(tái)呢? 2、餐飲店如何引流與推廣 3、餐飲店如何引流與推廣? 4、微商引流精準(zhǔn) 微商...

云攝影照片直播平臺(tái)(云攝影照片直播平臺(tái)下載)

云攝影照片直播平臺(tái)(云攝影照片直播平臺(tái)下載)

本篇文章給大家談?wù)勗茢z影照片直播平臺(tái),以及云攝影照片直播平臺(tái)下載對應(yīng)的知識(shí)點(diǎn),希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、享像派云攝影App能連接Sony A7M3進(jìn)行照片直播嗎?用Wifi還是OTG數(shù)據(jù)線? 2、享像派云攝影照片直播,需要買硬件設(shè)備嗎? 3、用享像派云攝影...

怎么看瀏覽器的下載內(nèi)容(瀏覽器怎么看下載的文件)

怎么看瀏覽器的下載內(nèi)容(瀏覽器怎么看下載的文件)

今天給各位分享怎么看瀏覽器的下載內(nèi)容的知識(shí),其中也會(huì)對瀏覽器怎么看下載的文件進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、華為手機(jī)在瀏覽器里下載,下載的東西在哪里查看? 2、火狐瀏覽器怎么看下載進(jìn)度 3、谷歌瀏覽器怎么看下載列表 4、如何查看下...

索尼相機(jī)怎么批量刪除照片(索尼相機(jī)怎樣批量刪除照片)

索尼相機(jī)怎么批量刪除照片(索尼相機(jī)怎樣批量刪除照片)

本篇文章給大家談?wù)勊髂嵯鄼C(jī)怎么批量刪除照片,以及索尼相機(jī)怎樣批量刪除照片對應(yīng)的知識(shí)點(diǎn),希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、sony AX700如何批量選擇刪除 2、a7m4怎么刪除同一天所有 3、索尼微單相機(jī)如何一次性刪除所有照片除了用電腦和格式化 4、sony...