J'ai un POJO donné ci-dessous que je veux PUT sur le serveur en JSON ou XML.
C'est ce que j'ai fait
CLIENT:
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);
}
Les exemples que j'ai trouvés sur le Web utilisaient WebResource.
Je ne sais pas comment utiliser WebTarget. Ce que j'ai fait est tiré d'un exemple trouvé sur SO mais Entity.entity () donne une erreur à l'entité de méthode non définie (friend, 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
+ "]";
}
S'il vous plaît guider comment faire cela.
Merci
Il existe deux versions principales de Jersey différentes, 1.x et 2.x. Vous semblez essayer d’utiliser une combinaison des deux, ce qui ne fonctionnera pas. Les versions 2.x n'ont pas certaines classes comme dans 1.x et vice versa.
Si vous voulez utiliser Jersey 2.x, vous devriez utiliser Response
, plutôt que ClientResponse
Response response = target.request().put(Entity.json(friend));
// .json == automatic 'application/json'
Friend
WebTarget
Ventilation de base.
L'appel de request()
sur WebTarget
renvoie un Invocation.Buidler
Invocation.Builder builder = target.request();
Une fois que nous appelons put
, nous récupérons un Response
Response response = builder.put(Entity.json(friend));
Pour extraire un type connu de la réponse, nous pourrions utiliser readEntity(Class type)
String responseString = response.readEntity(String.class);
response.close();