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''
- Consulte Trabajar con la API de cliente para 2.x
- También como se mencionó en su publicación anterior , los getters y setters deberían ser públicos para la clase
Friend
- Consulte también la API de
WebTarget
Desglose básico.
La
request()
llamadarequest()
enWebTarget
devuelve unaInvocation.Buidler
Invocation.Builder builder = target.request();
Una vez que llamamos
put
, recibimos unaResponse
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