如何使用 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)消息
no instance(s) of type variable(s) exist so that JSONObject conforms to String inference variable T has incompatible bounds: equality constraints: JSONObject upper bounds: Object, String
添加:
我得到200作为响应状态,所以一切正常,当我做同样的事情,例如邮差或Fiddler有效。
答案 0 :(得分:0)
你可以通过使用Jackson来做到这一点:首先你从身体创建对象
ObjectMapper mapper = new ObjectMapper();
InputStream responseBody = response.getBody().in();
JSONObject jsonobject = mapper.readValue(responseBody, JSONObject.class);
然后将jsonobject转换为string:
String jsonInString = mapper.writeValueAsString(jsonobject);
答案 1 :(得分:0)
在这种特定情况下,它也应该与
一起使用Response response = service.path(path).request(MediaType.APPLICATION_JSON_TYPE).get();
String body = response.readEntity(String.class);
因为它试图读取实体并从中构造给定类型的对象。所以我认为这应该有用。