gpt4 book ai didi

java - jax-rs 返回字符串

转载 作者:行者123 更新时间:2023-12-01 18:34:05 25 4
gpt4 key购买 nike

我正在编写一个 jax-rs web 服务,我想通过 java 程序联系它。我定义了一个 @POST 方法,它接收字符串数组作为输入,并应该返回一个 boolean 值。

但实际上,我如何在 java 中访问这个返回值?我已经在网上搜索了几个小时了,每个人都编写返回字符串或其他内容的示例方法,但没有人展示如何从另一个 java 程序访问返回值。

以下是联系 @POST 方法的程序的代码:

ObjectOutputStream oos = null;
String[] login = {"XXXXXX","XXXXXXX"};
try {
login[1] = PasswordGenerator.hashPassword(login[1]);
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
URL url = new URL("XXXXX/XXXXXXX/XXXXXX/users/login/1");
try {
// creates a HTTP connection
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setUseCaches(false);
httpConn.setDoOutput(true);
httpConn.setRequestMethod("POST");
httpConn.setRequestProperty("Boolean", "application/xml");
OutputStream outputStream = httpConn.getOutputStream();
oos = new ObjectOutputStream(outputStream);
outputStream.close();

System.out.println();
} finally {
if (oos != null) {
oos.close();
}
}
}

我想知道的是:关闭我的outputStream后会发生什么?我的意思是,我启动了 POST 方法,但它应该返回一个 boolean 值。这个值在哪里?我怎样才能访问它???

最佳答案

JAX-RS 2.0 有一个客户端 API,它为您提供流畅的 API 来检索响应的内容:

Client client = ClientBuilder.newClient();
Boolean result = client.target("http://localhost:8080/xxx/")
.path("user/login/1")
.request(MediaType.TEXT_PLAIN_TYPE)
.post(Entity.entity(login, MediaType.APPLICATION_XML) , Boolean.class);

但不幸的是,您需要一个自定义 MessageBodyWriter 将 String[] 转换为 XML 文档。也许您应该更改服务器端方法(和客户端)来操作 DTO - 具有 2 个字段的 POJO,用户名密码 - 并用 @XmlRootElement 进行注释

类似的东西:

(客户端)

Credentials credentials = new 
credentials.setUsername("foo");
credentials.setUsername("hashedPwd");
Client client = ClientBuilder.newClient();
Boolean result = client.target("http://xxxxx")
.path("/user/login/1")
.request(MediaType.TEXT_PLAIN_TYPE)
.post(Entity.entity(credentials, MediaType.APPLICATION_XML) , Boolean.class);
System.out.println("Result: " + result);

(服务器端)

@Path("/login/{id}")
@POST
public Boolean test(@PathParam("id") String login, Credentials credentials) {
...
}

关于java - jax-rs 返回字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22812783/

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