我只是想在Java 8中获取HTTP GET请求返回的JSON。我的代码:
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
Client client = ClientBuilder.newClient();
Response response = client.target("https://dog.ceo/api/breeds/list/all")
.request()
.header("Content-type", MediaType.APPLICATION_JSON)
.get();
String json_string = EntityUtils.toString(response.getEntity());
我在最后一行收到错误:
java: incompatible types: java.lang.Object cannot be converted to org.apache.http.HttpEntity
如何从响应中获取JSON?
我试过了:
JSONObject jsonObject = client.target("https://dog.ceo/api/breeds/list/all")
.request()
.header("Content-type", MediaType.APPLICATION_JSON)
.get(JSONObject.class);
System.out.println("jsonObject is " + jsonObject);
我收到错误:
javax.ws.rs.client.ResponseProcessingException: org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyReader not found for media type=application/json, type=class org.json.JSONObject, genericType=class org.json.JSONObject.
我也尝试过:
Response response = client.target("https://dog.ceo/api/breeds/list/all")
.request()
.header("Content-type", MediaType.APPLICATION_JSON)
.get();
System.out.println(response.getEntity().toString());
我得到: org.glassfish.jersey.client.internal.HttpUrlConnector$2@350d3f4d
这个基本的东西怎么样 - 从响应中获取JSON - 是如此困难?
答案 0 :(得分:0)
问题在于这一部分:
// [...]
String json_string = EntityUtils.toString(response.getEntity());
尝试这样做:
// [...]
String json_string = EntityUtils.toString((HttpEntity) response.getEntity());
但这只是一个猜测,因为我没有运行代码我无法测试它。
答案 1 :(得分:0)
可以尝试使用response.readEntity(String.class)
或response.readEntity(HttpEntity.class)
。
https://docs.oracle.com/javaee/7/api/javax/ws/rs/core/Response.html#readEntity-java.lang.Class-
这应该给你一个你可以使用的类型。
编辑:
response.readEntity(String.class)
最终确实有效。