Pregunta

Estoy desarrollando una aplicación Java del lado del cliente que tiene un poco de funcionalidad que requiere la obtención de datos de algunos servicios web que transmiten en JSON (algunos REST, otros no). No JavaScript, no hay ningún navegador web, sólo un archivo JAR claro que va a ejecutar localmente con Swing para la interfaz gráfica de usuario.

Esto no es un problema nuevo o único; seguramente debe haber algunas librerías de código abierto por ahí que se encargará de la transmisión de datos JSON a través de HTTP. Ya he encontrado algunos que analizar JSON, pero estoy teniendo problemas para encontrar alguien que se deje manejar la comunicación HTTP para consumir el servicio web JSON.

Hasta ahora he encontrado Apache Axis2 parecer, la cual podría tener, al menos, parte de la solución, pero no veo la documentación suficiente para que pueda saber si se va a hacer lo que necesito, o cómo usarlo. Quizás parte del problema es que no tengo experiencia con los servicios web así que no soy capaz de conocer una solución cuando la veo. Espero que algunos de ustedes me puede apuntar en la dirección correcta. Ejemplos de ello serían útiles.

¿Fue útil?

Solución

Apache HttpClient 4,0 es el mejor en el negocio y es moderadamente fácil de aprender.

Si desea más fácil que usted podría utilizar HtmlUnit que imita el comportamiento de navegadores por lo que puede conseguir con facilidad el contenido (y analizarlo en HTML, JavaScript y CSS, también se puede ejecutar código JavaScript en el contenido de lo que podía archivos JSON probablemente analizar para usar JSON.parse o cualquier otro funciones equivalentes) de cualquier página de la web.

Así que para HtmlUnit aquí es un código de ejemplo:

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

pero quizá bastante pesado para sus necesidades por lo que un recomendar el uso de biblioteca HttpClient. Estoy seguro de que podría encontrar muchas bibliotecas JSON para Java, pero aquí está uno para usted JSON

Otros consejos

Si quieres un poco más de confort que tener que lidiar con URLConnection, echa un vistazo a Resty para Java. Simple, ligero, pero todavía bastante nuevo.

http://beders.github.com/Resty

Este es un ejemplo para JSON:

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

Sin dependencias. Un frasco pequeño y que son buenos para ir.

Lo hice usando un simple biblioteca de Java JSON. Utilice la biblioteca de 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 el servicio web utiliza OAuth y un token de acceso que no puede utilizar el ejemplo anterior sin embargo.

Es genial para ver que sus servicios web son REST. servicios web RESTful son bastante fáciles de desarrollar y para consume.Well ... que no es necesario tomar ninguna atención adicional a los datos JSON tranmit través de la red de datos ... si es en JSON en en formato XML están incrustados en el encabezado HTTP ..Following fragmento de código le ayudará a entender la idea:

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();
    ....
    ....
}

En este código esté recibiendo datos en formato XML desde services.After web que recibe los datos en un objeto StringBuilder, estoy análisis del XML. De la misma manera se puede llamar a los servicios web utilizando este código y puede recibir sus datos JSON. puede utilizar javaJSON API, disponible en Aquí , para extraer los datos de notación JSON.

Código de Esperanza le ayudará a ...

PS: clases HTTPConnectionManager, XMLParser y Request (objeto request) no son ninguna API estándar. que son escritos por mi propia cuenta para manejar múltiples llamadas de servicio web. Este fragmento de código es sólo para darle mi idea.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top