日韩精品亚洲精品中文字幕乱伦AV|曰韩区二区三区日韩中文字幕五码|ady99久久人人看人人摸人人|动漫一区二区黄99精品视频在线|AV片在线观看亚洲中文国产精品|伦乱在线VA欧美性爱一二区|亚洲无码mv91热色视频|激情六月综合欧美精品中文

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

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

軟件開(kāi)放5個(gè)月前 (08-16)390

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

最開(kāi)始下載文件的代碼很簡(jiǎn)單

URL url = new URL(fileUrl);

InputStream is = url.openStream();

ByteArrayOutputStream baos = new ByteArrayOutputStream();

IOUtils.copy(is, baos);

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

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,再?gòu)恼?qǐng)求頭Location中取地址進(jìn)行數(shù)據(jù)流的獲取。正準(zhǔn)備自己來(lái)處理的,突然想到項(xiàng)目中已經(jīng)引入了強(qiáng)大的Hutool工具包,然后一句代碼就OK了

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

展開(kāi)全文

那么,為什么它一行代碼就可以處理這個(gè)難題呢?我們來(lái)大概的看一下,首先進(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ā)送請(qǐng)求

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)方式也是上面我們提到的思路是一致的,通過(guò)遞歸方式去多次獲取返回的請(qǐng)求頭中的LOCATION地址,嘗試獲取最終的文件下載地址?,F(xiàn)在這般簡(jiǎn)便的工具類(lèi)越發(fā)的多,我們?cè)谑褂玫耐瑫r(shí)也需要去學(xué)習(xí)工具類(lèi)類(lèi)的實(shí)現(xiàn)思路。這樣我們才不會(huì)越發(fā)被動(dòng)。

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

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

本文鏈接:http://www.atlasseeker.com/post/119798.html

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

學(xué)軟件開(kāi)發(fā)好就業(yè)嗎(現(xiàn)在學(xué)軟件開(kāi)發(fā)好嗎)

學(xué)軟件開(kāi)發(fā)好就業(yè)嗎(現(xiàn)在學(xué)軟件開(kāi)發(fā)好嗎)

今天給各位分享學(xué)軟件開(kāi)發(fā)好就業(yè)嗎的知識(shí),其中也會(huì)對(duì)現(xiàn)在學(xué)軟件開(kāi)發(fā)好嗎進(jìn)行解釋?zhuān)绻芘銮山鉀Q你現(xiàn)在面臨的問(wèn)題,別忘了關(guān)注本站,現(xiàn)在開(kāi)始吧!本文目錄一覽: 1、軟件開(kāi)發(fā)工程師以后工作好找嗎? 2、學(xué)軟件開(kāi)發(fā)畢業(yè)后好找工作嗎? 3、學(xué)軟件開(kāi)發(fā)前景好嗎? 4、軟件開(kāi)發(fā)難不難?好就業(yè)嗎? 5...

婚禮官網(wǎng)免費(fèi)源碼(婚禮網(wǎng)站模板)

婚禮官網(wǎng)免費(fèi)源碼(婚禮網(wǎng)站模板)

今天給各位分享婚禮官網(wǎng)免費(fèi)源碼的知識(shí),其中也會(huì)對(duì)婚禮網(wǎng)站模板進(jìn)行解釋?zhuān)绻芘銮山鉀Q你現(xiàn)在面臨的問(wèn)題,別忘了關(guān)注本站,現(xiàn)在開(kāi)始吧!本文目錄一覽: 1、2022年國(guó)內(nèi)景區(qū)婚禮怎么報(bào)名 2、如何查詢一個(gè)企業(yè)的官網(wǎng)頁(yè)面源代碼?如何設(shè)置關(guān)鍵字的優(yōu)化,線上 3、愛(ài)克絲文婚禮公司還在嗎 4、婚禮的電...

sony相機(jī)官方售后電話(sony相機(jī)客服電話)

sony相機(jī)官方售后電話(sony相機(jī)客服電話)

今天給各位分享sony相機(jī)官方售后電話的知識(shí),其中也會(huì)對(duì)sony相機(jī)客服電話進(jìn)行解釋?zhuān)绻芘銮山鉀Q你現(xiàn)在面臨的問(wèn)題,別忘了關(guān)注本站,現(xiàn)在開(kāi)始吧!本文目錄一覽: 1、索尼相機(jī)合肥售后服務(wù)在哪里 2、哈爾濱的索尼相機(jī)售后服務(wù)在哪 3、襄陽(yáng)SONY相機(jī)的售后服務(wù)電話是多少?地址在哪? 索尼相機(jī)...

女孩子做裝修銷(xiāo)售好不(裝飾裝修銷(xiāo)售好做不)

女孩子做裝修銷(xiāo)售好不(裝飾裝修銷(xiāo)售好做不)

本篇文章給大家談?wù)勁⒆幼鲅b修銷(xiāo)售好不,以及裝飾裝修銷(xiāo)售好做不對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、女孩子到底適不適合做房產(chǎn)銷(xiāo)售,說(shuō)的詳細(xì)點(diǎn),謝謝~ 2、女孩子做銷(xiāo)售合適嗎?會(huì)有哪些不便 3、大家來(lái)說(shuō)說(shuō),女孩子做銷(xiāo)售、客戶好嗎? 女孩子到底適不適合做房...

招聘表格模板免費(fèi)下載(招聘表格模板免費(fèi)下載安裝)

招聘表格模板免費(fèi)下載(招聘表格模板免費(fèi)下載安裝)

今天給各位分享招聘表格模板免費(fèi)下載的知識(shí),其中也會(huì)對(duì)招聘表格模板免費(fèi)下載安裝進(jìn)行解釋?zhuān)绻芘銮山鉀Q你現(xiàn)在面臨的問(wèn)題,別忘了關(guān)注本站,現(xiàn)在開(kāi)始吧!本文目錄一覽: 1、如何制作個(gè)人簡(jiǎn)歷表格 2、簡(jiǎn)歷表怎么制作 3、如何寫(xiě)招聘啟事? 4、個(gè)人簡(jiǎn)歷在哪里制作 如何制作個(gè)人簡(jiǎn)歷表格 1、簡(jiǎn)歷有...

體育直播app大全免費(fèi)下載(中國(guó)體育直播app下載)

體育直播app大全免費(fèi)下載(中國(guó)體育直播app下載)

本篇文章給大家談?wù)勼w育直播app大全免費(fèi)下載,以及中國(guó)體育直播app下載對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、體育直播的軟件有哪些?用哪個(gè)最好,求推薦 2、請(qǐng)問(wèn)體育直播的網(wǎng)站有哪些啊 3、有什么手機(jī)軟件可以看nba直播 體育直播的軟件有哪些?用哪個(gè)最好...