2017-02-18 2 views
0

Donc, je suis à perdre comment faire: le but est simplement de faire un appel à l'api openweather en java et d'avoir le résultat retourné sur la console. Je ne trouve pas de tutoriels sur la façon de le faire, uniquement sur la façon d'analyser les données JSON d'un autre fichier ...Appel d'API Java à l'aide de JsonReader?

Erm est-ce aller dans la bonne direction? Aucune idée. Modifié selon la suggestion de tenter d'utiliser Gson

import com.google.gson.JsonElement; 
import com.google.gson.JsonPrimitive; 
import com.google.gson.JsonSerializationContext; 
import com.google.gson.JsonSerializer; 

import javax.json.Json; 
import javax.json.JsonArray; 
import javax.json.JsonObject; 
import javax.json.JsonReader; 
import javax.json.JsonValue; 


public class ApiJSONRead { 

    URL apiURL = new URL("http://api.openweathermap.org/data/2.5/find?q=London&APPID=(idhere)"); 

    public static void main(String[] args) throws IOException { 



     JsonObject jobj = new Gson().fromJson(apiURL, JsonObject.class); 
     var Jsonresponse = jobj.get("weather").getAsString(); 


     System.out.println(Jsonresponse); 

    } 

} 
+0

* Aucune idée *: vous faire une idée en exécutant votre code, et la lecture des messages d'erreur. Un FileInputStream, comme son nom (et son javadoc) l'indiquent, est utilisé pour lire des fichiers. Pas d'URL. Comment pourriez-vous obtenir un InputStream à partir d'une URL? Le javadoc d'URL pourrait peut-être vous en parler. –

+0

Voir: http://stackoverflow.com/questions/2793150/using-java-net-urlconnection-to-fire-and-handle-http-requests –

Répondre

1

Trier de, bien que l'un des commentateurs RELEVE exécuter votre code. Ça ne marchera pas. Une fois que vous obtenez le flux, ce que vous avez devrait fonctionner. Mais le apiURL n'est pas un fichier, donc ne comprendra pas comment le lire. Découvrez Apache HttpComponents. Plus précisément, here's un exemple qui montre comment faire une demande GET, ce qui est exactement ce que vous essayez de faire.

1

Pour analyser l'utilisation des données JSON peuvent utiliser l'API Google gson

par exemple

JsonObject jobj = new Gson().fromJson(response, JsonObject.class); 
    jsonresponse = jobj.get("message").getAsString(); 
+0

Merci Vikrant, auriez-vous des exemples d'utilisation plus complets? Je peux seulement trouver des exemples en utilisant des fichiers, mais aucun exemple sur la façon de lire les données à partir de l'adresse URL ... – Mehmet

+0

Vous pouvez taper l'URL en utilisant le client HTTP apache, HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet ("http://ip.jsontest.com/"); org.apache.http.HttpResponse httpResponse = client.execute (requête); Réponse à la chaîne = EntityUtils.toString (httpResponse.getEntity()); System.out.println (réponse); –

1

vérifier le code ci-dessous et d'importation pots nécessaires

import java.io.IOException; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.util.EntityUtils; 

import com.google.gson.Gson; 
import com.google.gson.JsonObject; 


public class ApiJSONRead { 



    public static void main(String[] args) throws IOException { 


     HttpClient client = new DefaultHttpClient(); 
     HttpGet request = new HttpGet("http://ip.jsontest.com/"); 
     org.apache.http.HttpResponse httpResponse = client.execute(request); 
     String response = EntityUtils.toString(httpResponse.getEntity()); 
     System.out.println(response); 
     JsonObject jobj = new Gson().fromJson(response, JsonObject.class); 
     String Jsonresponse = jobj.get("ip").getAsString(); 
     System.out.println(Jsonresponse); 
    } 

}