Ich versuche ein Bild auf meinem Android von meinem Server zu laden. Ich habe es zur Arbeit gebracht. Aber seltsamerweise habe ich ArrayIndexOutOfBoundsException
in meinem Code unten. Da ich HttpURLconnection.getContentLength()
verwende, um meine Byte-Array zu generieren, kann ich nicht herausfinden, warum das passiert. Der Wert von getContentLength
stimmte mit der genauen Dateilänge auf meinem Server überein, daher ist es nicht das Problem bei der Übertragung.ArrayIndexOutOfBound während des Ladens Internet Bild
Als Workaround: Ich habe es zu arbeiten, indem Sie zusätzliche Länge zum Array hinzufügen. Das funktioniert, aber ich mache mir Sorgen, dass die zusätzliche Länge dazu führt, dass BitmapFactory unerwünschte Ergebnisse produziert.
Kann mir jemand eine Lösung dazu sagen? Oder sollte ich immer etwas Sicherheit hinzufügen und die genaue Länge der Datei an die Bitmapfactory übergeben?
Unten ist das Verbindungsteil meines Codes, die schief geht:
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();
}
welche Art von Antwort werden Sie davon ab, Der Server – warl0ck
Sie können Picasso oder Glide-Bibliothek verwenden, um das Bild zu laden. – Dhiren
@ warl0ck Der Code, den ich poste, läuft auf meinem Testtelefon und lädt das Bild. Es wird also nicht 404 oder so etwas sein. Ich wollte nur wissen warum und ob es vermeidbar ist. – HarryTheF