Actu_numerique Posté(e) 6 janvier 2013 Share Posté(e) 6 janvier 2013 (modifié) Problème résolu, Autre question plus bas ;) Modifié 12 janvier 2013 par Thomas31 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 7 janvier 2013 Share Posté(e) 7 janvier 2013 Il te dit qu'il ne trouve pas la propriété "Users" (avec un U majuscule) dans la classe ObjetUsers, dans laquelle la propriété en question s'appelle "users" (avec un u minuscule, selon le standard JavaBean). Dans ton flux JSON, renomme donc cette propriété en "users", cela fonctionnera peut être mieux 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Actu_numerique Posté(e) 7 janvier 2013 Auteur Share Posté(e) 7 janvier 2013 (modifié) Je suis vraiment un boulet... Merci ! quand j'avais vu cette erreur j'avais essayé de modifié le "users" en "Users"... Ça ne marchais pas... mais en modifiant dans le fichier JSON pas de soucis... le fais d’écrire "Users" dans le code n'est pas pris en compte en fait ? que ce passe t'il ? Modifié 7 janvier 2013 par Thomas31 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 7 janvier 2013 Share Posté(e) 7 janvier 2013 C'est le nom des getters/setters qui est pris en compte par Jackson (les méthodes getUsers et setUsers dans ObjetUsers). A partir de ces méthodes, il en déduit le nom de la propriété, en enlevant le préfixe (get et set) et en passant la première lettre en minuscule; donc, la propriété s'appelle "users", même si ton getter se nomme "getUsers"; c'est le principe du standard "JavaBean". 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Actu_numerique Posté(e) 10 janvier 2013 Auteur Share Posté(e) 10 janvier 2013 Ah d'accord merci :) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Actu_numerique Posté(e) 12 janvier 2013 Auteur Share Posté(e) 12 janvier 2013 (modifié) Bon je n'ai pas de problème pour parser avec android 2.1, mais lorsque je test sur android 4.2, j'ai des erreur au niveau du téléchargement du fichier... il semble ne pas trouver le fichier a l'adresse indiqué. le code : package Controlleurs; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import android.os.Environment; import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.ObjectMapper; import elements.Line; public class LinesController { private static final String DL_URL = "http://pt.data.tisseo.fr/linesList?format=json&displayTerminus=1"; private ObjectMapper objectMapper = null; private JsonFactory jsonFactory = null; private JsonParser jp = null; private ArrayList<Line> lineList = null; private ParseLines parse = null; private File jsonOutputFile; private File jsonFile; private HashMap<String, Line> lineListId = null; public LinesController() { objectMapper = new ObjectMapper(); jsonFactory = new JsonFactory(); lineListId = new HashMap<String, Line>(); } public void init() { downloadJsonFile(); try{ this.jp = jsonFactory.createJsonParser(jsonFile); this.parse = objectMapper.readValue(jp, ParseLines.class); this.lineList = parse.getLines().getLine(); for (int i = 0; i < parse.getLines().getLine().size(); i++) { this.lineListId.put(parse.getLines().getLine().get(i).getShortName(), parse.getLines().getLine().get(i)); } } catch(JsonParseException e) { e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); } } private void downloadJsonFile() { try{ createFileAndDirectory(); URL url = new URL(LinesController.DL_URL); HttpURLConnection urlConnection; urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setDoOutput(true); urlConnection.connect(); FileOutputStream fileOutput = new FileOutputStream(jsonFile); InputStream inputStream = urlConnection.getInputStream(); byte[] buffer = new byte[1024]; int bufferLength = 0; while((bufferLength = inputStream.read(buffer)) > 0) { fileOutput.write(buffer, 0, bufferLength); } fileOutput.close(); } catch(MalformedURLException e) { e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); } } private void createFileAndDirectory() throws FileNotFoundException { final String extStorageDirectory = Environment .getExternalStorageDirectory().toString(); final String meteoDirectory_path = extStorageDirectory + "/toulouse-navigation"; jsonOutputFile = new File(meteoDirectory_path, "/"); if(jsonOutputFile.exists() == false) jsonOutputFile.mkdirs(); jsonFile = new File(jsonOutputFile, "lines.json"); } public ArrayList<Line> findAll() { return lineList; } public HashMap<String, Line> getLineListId() { return lineListId; } } le logcat : 01-12 15:16:42.517: W/System.err(1066): java.io.FileNotFoundException: http://pt.data.tisseo.fr/linesList?format=json&displayTerminus=1 01-12 15:16:42.537: W/System.err(1066): at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:186) 01-12 15:16:42.549: W/System.err(1066): at Controlleurs.LinesController.downloadJsonFile(LinesController.java:68) 01-12 15:16:42.549: W/System.err(1066): at Controlleurs.LinesController.init(LinesController.java:43) EDIT : En fait les version récentes ne semble pas prendre en compte l'adresse :http://pt.data.tisseo.fr/linesList?format=json&displayTerminus=1. Car si j'heberge le fichier sur mon serveur, l'application le télécharge bien... Comment remédier a ce problème ? Modifié 12 janvier 2013 par Thomas31 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Actu_numerique Posté(e) 13 janvier 2013 Auteur Share Posté(e) 13 janvier 2013 (modifié) Bon bah je viens de vois que l'erreur été aussi présente sur android 2.1 lorsque je change urlConnection.setRequestMethod("GET"); en urlConnection.setRequestMethod("POST"); mais ne cause pas de fermeture de l'application sur cette version. Voici le logcat : 01-13 19:52:31.229: W/System.err(437): java.io.FileNotFoundException: http://pt.data.tisseo.fr/linesList?format=json&displayTerminus=1/ 01-13 19:52:31.229: W/System.err(437): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:521) 01-13 19:52:31.239: W/System.err(437): at Controlleurs.LinesController.downloadJsonFile(LinesController.java:69) 01-13 19:52:31.239: W/System.err(437): at Controlleurs.LinesController.init(LinesController.java:44) 01-13 19:52:31.239: W/System.err(437): at com.example.parsingtest.Ligne$1.run(Ligne.java:38) Comment remédier a ce problème ? Modifié 13 janvier 2013 par Thomas31 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 21 janvier 2013 Share Posté(e) 21 janvier 2013 Pourquoi veux-tu changer la méthode HTTP utilisée ? Si c'est GET qu'il faut utiliser (cela dépend de l'implémentation de ton application sur le serveur), il ne faut pas dans ce cas que tu fasses le urlConnection.setDoOutput(true) que l'on voie dans ton code (qu'il ne faut utiliser que pour une requête POST ou PUT... qui envoie des données au serveur) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.