2009-12-05 6 views
0

Je veux faire une requête Http et stocker le résultat dans un JSONObject. Je n'ai pas beaucoup travaillé avec les servlets, donc je ne sais pas si je suis 1) Faire la demande correctement, et 2) supposé créer le JSONObject. J'ai importé les classes JSONObject et JSONArray, mais je ne sais pas où je devrais les utiliser. Voici ce que j'ai:Comment puis-je récupérer un flux dans JSON à partir d'une servlet Java?

 public void doGet(HttpServletRequest req, HttpServletResponse resp) 
throws IOException { 

     //create URL  
     try { 
      // With a single string. 
      URL url = new URL(FEED_URL); 

      // Read all the text returned by the server 
      BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); 
      String str; 
      while ((str = in.readLine()) != null) { 
       // str is one line of text; readLine() strips the newline character(s) 
      } 
      in.close(); 
     } catch (MalformedURLException e) { 
     } 
     catch (IOException e) { 
     } 

Mon FEED_URL est déjà écrit pour qu'il retournera un flux formaté pour JSON.

Cela m'est arrivé depuis des heures. Merci beaucoup, vous êtes une ressource inestimable!

Répondre

2

d'abord recueillir la réponse dans une chaîne:

BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); 
StringBuilder fullResponse = new StringBuilder(); 
String str; 
while ((str = in.readLine()) != null) { 
    fullResponse.append(str); 
} 

Ensuite, si la chaîne commence par "{", vous pouvez utiliser:

JSONObject obj = new JSONObject(fullResponse.toString()); //[1] 

et si elle commence par "[", vous pouvez utiliser:

JSONArray arr = new JSONArray(fullResponse.toStrin()); //[2] 

[1] http://json.org/javadoc/org/json/JSONObject.html#JSONObject%28java.lang.String%29

[2] http://json.org/javadoc/org/json/JSONArray.html#JSONArray%28java.lang.String%29

0

Tout d'abord, il ne s'agit en fait pas d'un problème de servlet. Vous n'avez aucun problème avec javax.servlet API. Vous avez juste des problèmes avec l'API java.net et l'API JSON. Pour l'analyse et la mise en forme des chaînes JSON, je recommande d'utiliser Gson (Google JSON) au lieu des API JSON héritées. Il supporte bien mieux les génériques et les propriétés imbriquées et peut convertir une chaîne JSON en un javabean complet en un seul appel.

J'ai posté un exemple de code complet avant here. J'espère que vous le trouverez utile.

Questions connexes