当前位置: 首页 > 知识库问答 >
问题:

如何使用javax.ws.rs.client.WebTarget从REST客户端发送json对象

殳越
2023-03-14

下面给出了一个POJO,我想把它作为JSON或XML放到服务器上。

这就是我所做的

客户:

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

我在网上找到的例子是使用网络资源。

我不知道如何使用WebTarget。我所做的是从SO上找到的一些示例中获取的,但是Entity.entity()给出了错误未定义的方法实体(朋友,字符串)。

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
                 + "]";
}

请指导如何做到这一点。

谢谢

共有1个答案

萧展鹏
2023-03-14

有两个不同的新泽西主要版本,1.x和2.x,你似乎试图使用两者的组合,这不会起作用。2.x版本没有1.x中的一些类,反之亦然。

如果你想使用泽西岛2.x,那么你应该使用响应,而不是客户端响应

Response response = target.request().put(Entity.json(friend));
                                        // .json == automatic 'application/json'
  • 请参阅使用 2.x 版的客户端 API
  • 此外,正如您之前的文章中提到的,对于Friend类,获取者和设置者应该是公开的
  • 另请参阅网络目标 API

基本崩溃。

>

  • WebTarget上调用request()将返回一个Invocation.Buildler

    Invocation.Builder builder = target.request();
    

    一旦我们调用put,就会返回响应

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

    要从响应中提取已知类型,可以使用readEntity(Class-type)

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

  •  类似资料:
    • 问题内容: 我在下面给出了一个POJO,我希望将其作为JSON或XML格式放入服务器。 这就是我所做的 客户: 我在网上发现的示例都在使用WebResource。 我不知道如何使用WebTarget。我所做的事情取自于SO上的一些示例,但Entity.entity()给出了错误的未定义方法entity(friend,String)。 POJO 请指导如何执行此操作。 谢谢 问题答案: 泽西岛有两种

    • 我在Spring框架中有csrf保护。所以在每个请求中,我都从ajax调用中发送csrf令牌,这是完美的工作。 在ajax

    • 资源 ComplexObject类只是一个带有字符串的类。当我点击URL:http://localhost:8080/simple-service-webapp/webapi/myresource/This work时,我得到的是“get it!” 但是当我点击:http://localhost:8080/simple-service-webapp/webapi/myresource/comple

    • 我试图发送数据类型ArrayBuffer在json到我的服务器使用socket.io如下: 在服务器端,当我在套接字中收到“记录”事件时,我从JSON获取数据,并将其保存在名称文件中,如下所示: 我正在使用require('wav')) 我做错了什么?我不能像这样在插座中发送ArrayBuffer吗。伊奥?

    • 我正在通过在WebSocketClientFlow上遵循doc来尝试客户端websocket。

    • 我不确定这是否可能,但我希望在客户端看到req对象的全部内容。 这将导致如下错误: TypeError:将循环结构转换为JSON