Question

Je développe une application Java côté client qui a un peu de fonctionnalité qui nécessite d'obtenir des données de certains services Web qui transmettent JSON (certains RESTful, d'autres non). Pas de JavaScript, aucun navigateur Web, juste un fichier JAR ordinaire qui se déroulera localement avec balançoire pour l'interface graphique.

Ce n'est pas un problème nouveau ou unique; il doit sûrement y avoir quelques bibliothèques open source là-bas qui se chargera de la transmission de données JSON sur HTTP. Je l'ai déjà trouvé certains qui analysera JSON, mais je vais avoir du mal à trouver quelqu'un pour gérer la communication HTTP pour utiliser le service Web JSON.

Jusqu'à présent, j'ai trouvé Apache Axis2 apparemment ce qui pourrait avoir au moins une partie de la solution, mais je ne vois pas assez de documentation pour elle de savoir si elle va faire ce que je dois, ou comment l'utiliser. Peut-être une partie du problème est que je n'ai pas d'expérience avec les services Web, donc je ne suis pas en mesure de connaître une solution quand je le vois. J'espère que certains d'entre vous peut me diriger dans la bonne direction. Des exemples seraient utiles.

Était-ce utile?

La solution

Apache HttpClient 4.0 est le meilleur dans l'entreprise et est moyennement facile à apprendre.

Si vous voulez plus facile, vous pouvez utiliser HtmlUnit qui imite le comportement des navigateurs de sorte que vous pouvez facilement obtenir le contenu (et l'analyser en Html, javascript et css, vous pouvez également exécuter du code javascript sur le contenu vous pouvez donc les fichiers JSON probablement parse à l'aide JSON.parse ou toute autre fonction équivalente) de toutes les pages du web.

pour HtmlUnit est un exemple de code ici:

WebClient wc = new WebClient(BrowserVersion.FIREFOX_3_6);
HtmlPage page = wc.getPage("http://urlhere");
page.executeJavaScript("JS code here");

mais il peut être assez lourd pour vos besoins afin de recommander fortement l'utilisation de HttpClient bibliothèque . Je suis sûr que vous pouvez trouver de nombreuses bibliothèques JSON pour java, mais voici pour vous JSON-lib

Autres conseils

Si vous voulez un peu plus de confort que d'avoir à traiter avec URLConnection, consultez Resty pour Java. Simple, léger, mais encore assez nouveau.

http://beders.github.com/Resty

Voici un exemple pour JSON:

Resty r = new Resty();
String name = r.json("http://ws.geonames.org/postalCodeLookupJSON?"+
    "postalcode=66780&country=DE").get("postalcodes[0].placeName").toString();

Pas de dépendances. Un petit JAR et vous êtes bon pour aller.

Je l'ai fait à l'aide d'une simple bibliothèque Java JSON. Utilisez la bibliothèque Google ..

URL url = new URL("http://www.siteconsortium.com/services/hello.php");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

JSONParser parser=new JSONParser();
Object object = parser.parse(in);

JSONArray array = (JSONArray) object;        
JSONObject object2 = (JSONObject)array.get(0);
System.out.println(object2.get("hello")); 

Si le webservice utilise OAuth et un jeton d'accès vous ne pouvez pas utiliser l'exemple ci-dessus cependant.

Son grand pour voir que vos services Web sont RESTful. services web RESTful sont assez faciles à développer et à consume.Well ... vous n'avez pas besoin de prendre de précautions supplémentaires pour les données tranmit JSON sur le réseau ... Les données se trouve dans le JSON au format XML sont intégrés dans l'en-tête HTTP ..Following extrait de code vous aidera à comprendre l'idée:

httpConnection = new HTTPConnectionManager(request);
HttpURLConnection httpURLConnection = httpConnection.connect();
int responseCode = httpURLConnection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
    in = httpURLConnection.getInputStream();
    int x;
    StringBuilder stringBuilder = new StringBuilder();
    while ((x = in.read()) != -1) {
        stringBuilder.append((char) x);
    }
    XMLParser xmParser = new XMLParser();
    ....
    ....
}

Dans ce code, je reçois des données au format XML à partir services.After Web recevant les données dans un objet StringBuilder, je suis analyse XML. De la même façon, vous pouvez appeler vos services Web en utilisant ce code et peut recevoir vos données JSON. vous pouvez utiliser les API javaJSON, disponible ici , pour extraire les données de notation JSON.

Code Hope vous aider ...

PS: HTTPConnectionManager, XMLParser et Request (objet) request classes ne sont pas des API standard. ils sont écrits par mon propre compte pour gérer plusieurs appels de service Web. Cet extrait de code est juste pour vous donner mon idée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top