Ho un'app Android che funziona perfettamente con Android 2.xe 3.x, ma non funziona quando viene eseguito su Android 4.x.FileNotFoundException per HttpURLConnection in Ice Cream Sandwich
Il problema è in questa sezione di codice:
URL url = new URL("http://blahblah.blah/somedata.xml");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.connect();
InputStream inputStream = urlConnection.getInputStream();
Quando l'applicazione è in esecuzione su Android 4.x, i risultati getInputStream()
chiamata in un FileNotFoundException
. Quando lo stesso binario è in esecuzione su versioni precedenti di Android, ha successo. Gli URL funzionano anche bene nei browser Web e con curl
.
Apparentemente qualcosa su HttpURLConnection
è stato modificato in ICS. Qualcuno ha idea di cosa è cambiato e/o quale potrebbe essere la correzione?
I documenti dicono che 'setDoOutput (vero)' 'implica setRequestMethod ("POST")'. Che intendi? –
È pensato per fare un GET. (Non ho scritto il codice, quindi non so perché "setDoOutput (true)" era lì.) –
FWIW, 'setRequestMethod (" GET ")' e 'setDoOutput (true)' appaiono in un sacco di esempi codice per l'uso di 'HttpURLConnection'. Dove è documentato che costringe un POST? –