restful jax example java rest jax-rs jersey-2.0 jersey-client

java - jax - jersey-client maven



cómo enviar el objeto json desde el cliente REST usando javax.ws.rs.client.WebTarget (1)

Hay dos versiones principales de Jersey, 1.x y 2.x. Parece que intentas usar una combinación de ambas, lo que no funciona. Las versiones 2.x no tienen algunas clases como en 1.x y viceversa.

Si desea usar Jersey 2.x, entonces debería usar Response , en lugar de ClientResponse

Response response = target.request().put(Entity.json(friend)); // .json == automatic ''application/json''

Desglose básico.

  • La request() llamada request() en WebTarget devuelve una Invocation.Buidler

    Invocation.Builder builder = target.request();

  • Una vez que llamamos put , recibimos una Response

    Response response = builder.put(Entity.json(friend));

  • Para extraer un tipo conocido de la respuesta, podríamos usar readEntity(Class type)

    String responseString = response.readEntity(String.class); response.close();

Tengo un POJO dado a continuación que quiero PONER en el servidor como JSON o XML.

Esto es lo que hice

CLIENTE:

ClientConfig config = new ClientConfig(); Client client = ClientBuilder.newClient(config); WebTarget target = client.target(getBaseURI()); public void putFriend(String uri , Friend friend) { System.out.println(friend.toString()); target = target.path(some_path).path(uri); ClientResponse response = target.request(MediaType.APPLICATION_JSON).put(Entity.entity(friend,MediaType.APPLICATION_JSON),ClientResponse.class); }

Los ejemplos que encontré en la web usaban WebResource.

No sé cómo hacer uso de WebTarget. Lo que he hecho está tomado de algún ejemplo encontrado en SO pero Entity.entity () da un error de entidad de método no definido (amigo, String).

POJO

@XmlRootElement public class Friend{ private String friendURI; private String event; private String uri; String getUri() { return uri; } void setUri(String uri) { this.uri = uri; } String getFriendURI() { return friendURI; } void setFriendURI(String friendURI) { this.friendURI = friendURI; } String getEvent() { return event; } void setEvent(String event) { this.event = event; } public String toString() { return "Friend [friendURI=" + friendURI + ", uri=" + uri + ", event=" + event + "]"; }

Por favor guía cómo hacer esto.

Gracias