J'utilise une application où j'ai juste besoin de télécharger une paire de coordonnées pour Google Maps à partir d'un serveur mysql. Je peux le faire avec succès en utilisant PHP et un httpost normal, mais mon application se bloque pendant quelques secondes quand je le fais.Async HTTP post android
J'ai lu que vous devez rendre httppost asycronous afin d'éviter ce gel jusqu'à ce que le serveur finisse le prossess et envoie les résultats.
Le point est que j'ai besoin de ce résultat dans un tableau json comme le httpost normal.
Par exemple si j'avais ce httppost.
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.yoursite.com/script.php");
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("id", "12345"));
nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
String result11 = null;
// convert response to string
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(is11, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
sb.append(reader.readLine() + "\n");
String line = "0";
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is11.close();
result11 = sb.toString();
} catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
}
// parsing data
try {
JSONArray jArray1 = new JSONArray(result11);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Comment puis-je convertir en un poste asynchrone afin que je puisse éviter le gel?
Je ne sais pas comment votre code pourrait même compiler tel qu'il est, mais s'il vous plaît, utilisez [ 'EntityUtils.toString (response.getEntity())'] (http://stackoverflow.com/a/2324739/180740) au lieu d'avoir votre propre partie BufferedReader-n-StringBuilder. Le premier est moins de code, gère correctement les erreurs et obéit au codage de caractères envoyé par le serveur. –