GSon qui semble la librairie la plus rapide
Je croyais que c'était jackson ?
En fait GSon (et Jackson) sont bien pour sérialiser/désérialiser plein d'objets complexes... quand on fait 3 properties par "élément" d'un tableau c'est autre chose, et si le tableau n'est pas très grand (< 10000 rows), on peut tout lire en mémoire et un simple: JSONArray array = new JSONArray(string); suffit 
Bon... alors trêve de bavardage, en ce qui concerne le code....
Le NOMTE est une sécurité rajoutée depuis Android3 permettant de s'assurer que les programmeurs ne font pas des trucs sales, entre autre, des actions potentiellement longues dans le thread de l'UI (onClick, onCreate, ....).
Non seulement, c'est pas agréable d'attendre 5s que le click sur un bouton réagisse, mais en plus, il y a un risque de "Non Responsive Application".
On parle d'action lente, dès qu'un truc dure plus d'une demi seconde par exemple, ce qui est systématiquement le cas d'un appel sur le réseau (ouverture de la connexion réseau si pas déjà fait, résolution du nom du host, connexion TCP, envoi de la requête, attente de la réponse, réception de la réponse)... Donc dès qu'on touche au réseau, dans le thread UI, bim NOMTE.
Voir les AsyncTask pour solutionner le problème.
Indépendamment du NOMTE, quelques erreurs:
* Pas de test sur la valeur de retour: "return null;" en cas d'erreur => NPE si exception il y a.
* Aucun signalement de l'erreur à l'utilisateur...
* pas d'utilisation de getContentEncoding() pour savoir quel charset est utilisé pour la réponse (là il utilise le default charset tout le temps)
* Le test du status-code n'est pas bon.... toutes les valeurs de 200 à 399 sont sensées être "bonnes".... Surtout de 200 à 299 ^^
Partager