You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

REST客户端调用返回布尔值的Web服务时responseType应如何设置?

关于Jersey客户端调用REST POST方法的responseType参数说明

嘿,你当前的写法其实已经完全正确啦!

你服务端的validatePaiement方法返回的是基本类型boolean,对应的JSON响应会是true或false这种布尔值格式。在Jersey客户端生成的validatePaiement泛型方法里:

public <T> T validatePaiement(Object requestEntity, Class<T> responseType) throws ClientErrorException { 
    return webTarget.request(javax.ws.rs.core.MediaType.APPLICATION_JSON)
                   .post(javax.ws.rs.client.Entity.entity(requestEntity, javax.ws.rs.core.MediaType.APPLICATION_JSON), 
                         responseType); 
}

这里的responseType参数需要传入对应返回值类型的Class对象:

  • 因为Java泛型不支持直接使用基本类型(比如不能把boolean.class作为泛型参数),所以你传入Boolean.class(布尔基本类型的包装类)是完全正确的选择。Jersey会自动把服务端返回的JSON布尔值反序列化为Boolean对象,而你在主类里打印时,它会自动拆箱成基本类型boolean,完全不影响使用。

你现在的主类代码:

public static void main(String[] args) { 
    Paiement pay = new Paiement(111, 111, "yasin", 111, "yasin", "yasin"); 
    System.out.println(new NewJerseyClient().validatePaiement(pay, Boolean.class)); 
}

是完全可以正常工作的,运行后就能拿到服务端返回的验证结果啦。

补充一点小知识:如果你的服务端返回的是其他自定义对象(比如Paiement),那responseType就需要传入Paiement.class,原理是一样的——告诉Jersey客户端要把响应的JSON数据转换成哪种类型的Java对象。

内容的提问来源于stack exchange,提问作者AbdeAMNR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:24:22