Java NegativeArraySizeException異常解決方案
問題描述:服務(wù)器接收后臺(tái)返回的報(bào)文時(shí),提示java.lang.NegativeArraySizeException
分析:這種異常返回的原因,一般情況下沒有報(bào)文提示為返回空?qǐng)?bào)文,初步分析是響應(yīng)報(bào)文流長(zhǎng)度出了問題
百度一下類似的情況:https://stackoverflow.com/questions/11207897/negative-array-size-exception
節(jié)選部分內(nèi)容:
try{
connection = (HttpConnection)Connector.open("http://someurl.xml",Connector.READ_WRITE);
URLEncodedPostData postData = new URLEncodedPostData(URLEncodedPostData.DEFAULT_CHARSET, false);
postData.append("username", "loginapi");
postData.append("password", "myapilogin");
postData.append("term", word);
connection.setRequestMethod(HttpConnection.POST);
connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
connection.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.0");
requestOut = connection.openOutputStream();
requestOut.write(postData.getBytes());
String contentType = connection.getHeaderField("Content-type");
detailIn = connection.openInputStream();
int length = (int) connection.getLength();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
if(length > 0){//這里長(zhǎng)度沒有判定的情況下,byte array長(zhǎng)度若為-1會(huì)產(chǎn)生錯(cuò)誤
byte info[] = new byte[length];
int bytesRead = detailIn.read(info);
while(bytesRead > 0) {
baos.write(info, 0, bytesRead);
bytesRead = detailIn.read(info);
}
baos.close();
connection.close();
requestSuceeded(baos.toByteArray(), contentType);
detailIn.read(info);
}
else
{
System.out.println("Negative array size");
}
requestOut.close();
detailIn.close();
connection.close();
}
結(jié)論:HTTP服務(wù)器在返回響應(yīng)報(bào)文的時(shí)候,沒有進(jìn)行content.length長(zhǎng)度判斷,按照常規(guī)流程響應(yīng)了錯(cuò)誤長(zhǎng)度的報(bào)文,導(dǎo)致了接收方報(bào)文長(zhǎng)度異常
到此這篇關(guān)于Java NegativeArraySizeException異常解決方案的文章就介紹到這了,更多相關(guān)Java NegativeArraySizeException異常內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Maven?Web項(xiàng)目使用Cargo插件實(shí)現(xiàn)自動(dòng)化部署的詳細(xì)步驟
cargo ,它是一組幫助用戶實(shí)現(xiàn)自動(dòng)化部署,操作Web容器的工具,并且?guī)缀踔С炙械腤eb容器,這篇文章主要介紹了Maven?Web項(xiàng)目使用Cargo實(shí)現(xiàn)自動(dòng)化部署,需要的朋友可以參考下2023-02-02
Java IO流體系繼承結(jié)構(gòu)圖_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java IO流體系繼承結(jié)構(gòu)圖,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-05-05
ByteArrayInputStream簡(jiǎn)介和使用_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
ByteArrayInputStream 是字節(jié)數(shù)組輸入流。它繼承于InputStream。這篇文章主要介紹了ByteArrayInputStream簡(jiǎn)介和使用_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理,需要的朋友可以參考下2017-05-05
Spring中ImportBeanDefinitionRegistrar源碼和使用方式
Spring容器擴(kuò)展流程總結(jié):1. 定義Mapper層,2. 通過FactoryBean創(chuàng)建代理對(duì)象,3. 使用ImportBeanDefinitionRegistrar修改Bean定義,4. 應(yīng)用自定義注解@LuoyanImportBeanDefinitionRegistrar,5. 配置類中執(zhí)行后置處理器,6. 啟動(dòng)類中查看源碼,希望對(duì)大家有所幫助2024-11-11
java實(shí)現(xiàn)支付寶支付接口的調(diào)用
本文主要介紹了java實(shí)現(xiàn)支付寶支付接口的調(diào)用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
SpringMvc3+extjs4實(shí)現(xiàn)上傳與下載功能
這篇文章主要為大家詳細(xì)介紹了SpringMvc3+extjs4實(shí)現(xiàn)上傳與下載功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
java中獲取當(dāng)前服務(wù)器的Ip地址的方法
本篇文章主要介紹了java中獲取當(dāng)前服務(wù)器的Ip地址的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02
java中實(shí)體類實(shí)現(xiàn)時(shí)間日期自動(dòng)轉(zhuǎn)換方式
這篇文章主要介紹了java中實(shí)體類實(shí)現(xiàn)時(shí)間日期自動(dòng)轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
Spring Boot項(xiàng)目利用Redis實(shí)現(xiàn)集中式緩存實(shí)例
本篇文章主要介紹了Spring Boot項(xiàng)目利用Redis實(shí)現(xiàn)集中式緩存實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06

