restclient发送json,如何使用javax.ws.rs.client.WebTarget从REST客户端发送json对象
发布日期:2022-03-15 11:49:53 浏览次数:22 分类:技术文章

本文共 2187 字,大约阅读时间需要 7 分钟。

I have a POJO given below which I want to PUT to the server as JSON or XML.

This is what I have done

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);

}

Examples I found on web were using WebResource.

I don't know how to do using WebTarget. What I have done is taken from some example found on SO but Entity.entity() gives error undefined method entity(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

+ "]";

}

Please guide how to do this.

Thanks

解决方案

There are two different Jersey major versions, 1.x and 2.x, You seems to be trying to use a combination of both, which won't work. The 2.x versions don't have some classes as in 1.x and vice versa.

If you want to use Jersey 2.x, then you should be using Response, rather than ClientResponse

Response response = target.request().put(Entity.json(friend));

// .json == automatic 'application/json'

Also as mentioned in your previous post, the getters and setters should be public for the Friend class

Also see the WebTarget API

Basic breakdown.

Calling request() on WebTarget returns an Invocation.Buidler

Invocation.Builder builder = target.request();

Once we call put, we get back a Response

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

To extract a known type from the response, we could use readEntity(Class type)

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

response.close();

转载地址:https://blog.csdn.net/weixin_34574003/article/details/118907971 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:python中search,django python中的search_fields
下一篇:java eclipse6.6,使用Eclipse编译java 7 for java 6

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月08日 18时40分41秒