Ho problemi con il download di file binario (file zip) nella mia app da internet. Devo utilizzare l'autenticazione di accesso di base per autorizzare l'accesso al file, ma la risposta del server è sempre HTTP/1.0 400 Richiesta errata.Problema con l'autenticazione di accesso di base nel file downloader
String authentication = this._login+":"+this._pass;
String encoding = Base64.encodeToString(authentication.getBytes(), 0);
String fileName = "data.zip";
URL url = new URL("http://10.0.2.2/androidapp/data.zip");
HttpURLConnection ucon = (HttpURLConnection) url.openConnection();
ucon.setRequestMethod("GET");
ucon.setDoOutput(true);
ucon.setRequestProperty ("Authorization", "Basic " + encoding);
ucon.connect();
/*
* Define InputStreams to read from the URLConnection.
*/
InputStream is = ucon.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
/*
* Read bytes to the Buffer until there is nothing more to read(-1).
*/
ByteArrayBuffer bab = new ByteArrayBuffer(50);
int current = 0;
while ((current = bis.read()) != -1) {
bab.append((byte) current);
}
bis.close();
/* Convert the Bytes read to a String. */
FileOutputStream fos = this._context.openFileOutput(fileName, this._context.MODE_WORLD_READABLE);
fos.write(bab.toByteArray());
fos.close();
Potrebbe essere causato da spazi bianchi nella password?
Questo è tutto! Ho risolto questo problema qualche tempo fa. – Kamil
Ottima risposta, scoperto nel modo più difficile. Non ho potuto trovare da nessuna parte nei documenti sulla nuova linea. Sai dove si trova/perché è fatto? – sgarman
Perché dovrebbero farlo? – Xample