Actu_numerique Posted January 6, 2013 Share Posted January 6, 2013 (edited) Problème résolu, Autre question plus bas ;) Edited January 12, 2013 by Thomas31 Quote Link to comment Share on other sites More sharing options...
chpil Posted January 7, 2013 Share Posted January 7, 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 Quote Link to comment Share on other sites More sharing options...
Actu_numerique Posted January 7, 2013 Author Share Posted January 7, 2013 (edited) 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 ? Edited January 7, 2013 by Thomas31 Quote Link to comment Share on other sites More sharing options...
chpil Posted January 7, 2013 Share Posted January 7, 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 Quote Link to comment Share on other sites More sharing options...
Actu_numerique Posted January 10, 2013 Author Share Posted January 10, 2013 Ah d'accord merci :) Quote Link to comment Share on other sites More sharing options...
Actu_numerique Posted January 12, 2013 Author Share Posted January 12, 2013 (edited) 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 ? Edited January 12, 2013 by Thomas31 Quote Link to comment Share on other sites More sharing options...
Actu_numerique Posted January 13, 2013 Author Share Posted January 13, 2013 (edited) 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 ? Edited January 13, 2013 by Thomas31 Quote Link to comment Share on other sites More sharing options...
chpil Posted January 21, 2013 Share Posted January 21, 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) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.