java - 如何正确获取 WebTarget 获取请求响应 (JAX-RS) 的正文?

标签 java json web-services intellij-idea jax-rs

如何使用 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/

相关文章:

web-services - 返回图像和数字的 Web 服务

asp.net - VB.net反序列化,JSON从类型 'Dictionary(Of String,Object)'到类型 'String'的转换

java - 在没有异常类的java中创建自定义异常?

java - Google App Engine Flex 在运行 Play Framework 应用程序时出现 No X11 DISPLAY variable was set 错误;我在哪里设置这个变量?

javascript - .map() 不是函数映射动态创建的对象时出错

javascript - Angular 2+,下拉更改读取值和加载数据 - json 文件

java - 无法解析与前缀 'diffgr' 关联的命名空间。在 Castor 中

java - 如何以编程方式将视频从android上传到JWplayer服务器

java - 计算(而不是设计!)Java 中堆栈的最小值

javascript - 转换字符串(url 样式)以在对象中导航