Domanda

ho familiarità con Android HttpURLConnection e Apache HttpConnection classi e il loro modo di lavorare (sono tutti sincrono, ma posso vivere con questo).

Ho una grande risposta con molte righe di dati comming dal server. E 'una risposta JSON e posso visualizzare i dati parzialmente prima di tutto analizzato la risposta. Alcuni parser JSON permettono che (come xcers permette di xml). Fare i callback e metodi relativi alle due classi di cui sopra lo permettono? Quando ottengo la risposta da HttpURLConnection sul flusso di input di apertura e leggo, faccio ad aprire il flusso quando tutti i dati sono già lì? O posso aprirlo e leggerlo e più che seguire?

Inoltre, non v'è alcun metodo HTTP su Android che funziona con NIO?

È stato utile?

Soluzione

Con HttpClient, quando si apre il flusso di risposta in questo modo:

HttpGet request = new HttpGet();
request.setURI(new URI(url));
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
InputStream stream = entity.getContent();

e cominciare a leggere, in realtà si avvia il download e si ottiene nuovi byte non appena questi vengono ricevuti. Non aspettare di tutto per ottenere scaricato per iniziare la lettura.

Per quanto ne so il HttpClient che viene fornito in bundle con Android non si basa su NIO. Non so di qualsiasi alternativa che lo fa.

Altri suggerimenti

In aggiunta a tutte le possibili soluzioni in commento di Ladlestein, c'è la semplice risposta di avvolgere tutto ciò che in un AsyncTask. Ecco un progetto di esempio che dimostra facendo un HTTP request utilizzando HttpClient in un AsyncTask.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top