如何使用 javax.ws.rs 库获取 HTTP get 请求的正文?
我尝试过:
Response response = service.path(path).request().get();
String body = response.readEntity(String.class);
但这不起作用。相反,我得到了这个异常: java.lang.NoClassDefFoundError: javax/ws/rs/core/NoContentException
然后我尝试了:
Response response = service.path(path).request(MediaType.APPLICATION_JSON_TYPE).get();
String body = response.readEntity(JSONObject.class);
因为我实际上应该返回一个 JSON 字符串,但我不需要它作为 JSON 对象,这就是我之前像上面那样尝试的原因。
但这根本不起作用,我什至无法编译并获取(IntelliJ)消息
不存在类型变量的实例,因此 JSONObject 符合 String 推断变量 T 具有不兼容的边界:等式约束:JSONObject 上限:Object、String
添加:
我得到 200 作为响应状态,所以一切正常,当我在例如中做同样的事情时Postman 或 Fiddler 都可以。
最佳答案
您可以使用 Jackson 来做到这一点:首先从 body 创建对象
ObjectMapper mapper = new ObjectMapper();
InputStream responseBody = response.getBody().in();
JSONObject jsonobject = mapper.readValue(responseBody, JSONObject.class);
然后将jsonobject转换为字符串:
String jsonInString = mapper.writeValueAsString(jsonobject);
关于java - 如何正确获取 WebTarget 获取请求响应 (JAX-RS) 的正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43792264/