2012-03-28 28 views
8

He creado un servicio web REST con algunos métodos web. Pero no consigo que funcione pasando los parámetros a estos métodos.REST pasando Parámetros con Java

I.E.

@GET 
@Path("hello") 
@Produces(MediaType.TEXT_PLAIN) 
public String hello(String firstName, String lastName){ 

    return "Hello " + firstname + " " + lastname 
} 

¿Cómo invocaría ese método y cómo pasar los parámetros firstname y lastname? Probé algo como esto:

ClientConfig config = new DefaultClientConfig(); 

Client client = Client.create(config); 

WebResource service = client.resource(getBaseURI()); 

ClientResponse response = service.path("hello") 
.accept(MediaType.TEXT_PLAIN).put(ClientResponse.class); 

Pero ¿por dónde añadir los parámetros?

Gracias por su ayuda, mejores deseos, Chris

Respuesta

6

This tutorial debe ser de ayuda. Para incluir parámetros, necesitará usar el comando @PathParam como se muestra en this SO Post anterior.

+0

gracias me has ayudado mucho. Pero, ¿y si mi método quiere una matriz de cadenas? – Chris

+0

@Chris: Esto debería ayudar: http://stackoverflow.com/questions/5484209/pass-array-as-a-parameter-in-restful-webservice – npinti

+0

Muchas gracias. Ese enlace también fue útil para el contexto de su último enlace: http://stackoverflow.com/questions/5718575/how-can-i-grab-all-query-parameters-in-jersey-jaxrs – Chris

8

Si está utilizando SpringMVC para el desarrollo REST API puede utilizar

@RequestParam("PARAMETER_NAME"); 

En caso de Jersey pueden utilizar

@QueryParam("PARAMETER_NAME"); 

Método tener este aspecto

public String hello(@RequestParam("firstName")String firstName, @RequestParam("lastName")String lastName){ 

return "Hello " + firstname + " " + lastname 

}

2

Esto ayudarle

ClientResponse response = resource.queryParams(formData).post(ClientResponse.class, formData); 

donde FormData es

MultivaluedMap formData = new MultivaluedMapImpl(); 


formData.add("Key","Value"); 
formData.add("Key","Value"); 
... 
... 
... 
formData.add("Key","Value"); 
+0

Esto parecía prometedor para mí, pero ClientResponse no parece estar disponible en Android ... –

Cuestiones relacionadas