0
我想從我的服務器上加載我的android上的圖片。 我得到它的工作。但奇怪的是我在下面的代碼中得到了ArrayIndexOutOfBoundsException
。因爲我使用HttpURLconnection.getContentLength()
來生成我的字節數組,所以我無法弄清楚爲什麼會發生這種情況。從getContentLength
的值與我的服務器上的確切文件長度相匹配,所以它不是傳輸中的問題。ArrayIndexOutOfBound在加載互聯網圖片
作爲解決方法:我通過給數組添加額外的長度來解決問題。這工作,但我擔心額外的長度會導致BitmapFactory產生不需要的結果。
有人可以告訴我一個解決方案嗎? 或者我應該總是添加一些安全性並將文件的確切長度傳遞給Bitmapfactory?
下面是我的代碼的連接部分,其出錯:
try{
Log.d("connect_server","is connect");
URL url = new URL("someurl");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setUseCaches(false);
connection.connect();
OutputStreamWriter osw=new OutputStreamWriter(connection.getOutputStream());
Log.d("post param",params);
osw.write(params);
osw.flush();
osw.close();
byte[] buf=new byte[connection.getContentLength()+20];
InputStream src=connection.getInputStream();
int total=0;
int amt=512;
while(amt!=-1){
Log.d("isloafing",Integer.toString(total));
amt=src.read(buf,total,amt);
total+=amt;
Log.d("is loaDing",Integer.toString(amt));
}
Message msg=hnd.obtainMessage();
msg.arg1=msgTag;
msg.obj=buf;
hnd.sendMessage(msg);
}catch (IOException e)
{
e.printStackTrace();
}
,您在獲得什麼類型的反應:
要來自服務器的響應,你可以這樣做閱讀服務器 – warl0ck
您可以使用Picasso或Glide庫來加載圖像。 – Dhiren
@ warl0ck我發佈的代碼在我的測試手機上運行並加載圖片。所以它不會是404或類似的東西。只是想知道爲什麼,如果它是可以避免的。 – HarryTheF