gpt4 book ai didi

java - RESTful 客户端,用于测试我的 POST 方法

转载 作者:行者123 更新时间:2023-12-02 12:56:09 30 4
gpt4 key购买 nike

我正在用java开发RESTful云应用程序,一旦我实现了POST、DELETE、PUT和GET的所有方法,我需要通过一个简单的java客户端测试它们。我通过以下方式成功测试了 GET 和 DELETE:

String findById = target.path("..").path("..").path("17").request()
.accept(MediaType.APPLICATION_JSON).get(String.class).toString();
System.out.println(findById);

但是现在当我想尝试 PUT 和 POST 时,我无法使其工作。我尝试了以下方法:

String addBook = target.path("..").path("..").queryParam("author", "OO")
.queryParam("language", "OO")
.queryParam("publisher", "OO")
.queryParam("subject", "OO")
.queryParam("title", "OO")
.queryParam("isbn", "OO").request().accept(MediaType.APPLICATION_JSON)
.post(String.class);

该错误表明 .post 需要“SyncInvoker 类型中的方法 post(Entity, Class) 不适用于参数 (String, Class)”。

所以我的问题是实体应该是什么以及我应该如何指定它?客户端项目单独运行,而不是在主(服务器)项目上运行。

最佳答案

您不能使用查询参数发送 POST 请求。您必须使用帖子正文,它可以采用不同的内容类型,例如 JSON。您必须将代码更改为如下所示:

Map<String, Object> body = new HashMap<>();
body.put("language", "OO");
.....
String json = (new ObjectMapper()).writeValueAsString(body);
Entity<String> entity = javax.ws.rs.client.Entity.json(json);
String result = client.target(fullUrl).request().method("POST", entity, String.class);

关于java - RESTful 客户端,用于测试我的 POST 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44435277/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com