2011-05-03 104 views
6

Deseo llamar al servlet con algunos parámetros y recibir una respuesta. El código está escrito en Java. ¿Cuál es la mejor forma (más limpia) de hacer eso?Cómo llamar a un servlet desde el código Java

Además, ¿puedo llamar a un servlet y continuar con el código sin esperar a que el servlet termine (cerrar la conexión y "olvidarse de eso")?

+0

Puede dividir su solicitud en un 'Tema' separado si desea continuar con otras partes de su aplicación. Vea también: http://stackoverflow.com/questions/4349854/calling-a-servlet-from-a-java-application – Catchwa

+0

"¿Cuál es la mejor (más limpia) forma de hacer eso? ¿Qué hace * mejor * o * más limpio * significa. – Raedwald

Respuesta

4

Un mejor uso de la API de Apache HttpClient para el manejo y la comunicación con servlet

http://hc.apache.org/httpcomponents-client-ga/index.html

Características:

  1. Param son fáciles de pasar y analizar la respuesta.
  2. que permite incluso la comunicación a través de proxy
  3. de código abierto
  4. También soporta Asyncronous y muchos más Por favor, consultar la dirección URL anterior.
4

Ejemplo de here:

import java.net.*; 
import java.io.*; 

public class URLConnectionReader { 
    public static void main(String[] args) throws Exception { 
    URL yahoo = new URL("http://www.yahoo.com/"); 
    URLConnection yc = yahoo.openConnection(); 
    BufferedReader in = new BufferedReader(
          new InputStreamReader(
          yc.getInputStream())); 
    String inputLine; 

    while ((inputLine = in.readLine()) != null) 
     System.out.println(inputLine); 
    in.close(); 
    } 
} 

Desde su perspectiva, servlet es sólo una URL en algún servidor. En cuanto a no esperar una respuesta, lee sobre los hilos de Java. Pero no puede cerrar la conexión HTTP sin esperar a que finalice un servlet, ya que podría provocar un error en el servlet. Simplemente espere la respuesta en un hilo separado y deséchela si no importa.

+0

¿Tengo que esperar una respuesta (si la solución es usar un hilo, la respuesta es sí? Tengo que esperar una respuesta). ¿Qué tal pasar los parámetros al servlet? ¿Tengo que escribir la URL por mi cuenta (usando '?' y '&') o hay una manera más limpia? –

2

Usted podría utilizar Apache HttpClient Apache HttpClient

Esta funcionalidad también ha sin bloqueo de E/S disponibles NIO extensions

He aquí una Tutorial para el Apache HttpComponents.

También puede probar Jetty o Async Http Client

+1

no me gustan las personas que votan negativamente sin comentarios. Aquí hay un voto favorable para equilibrar la fuerza. – Nico

Cuestiones relacionadas