我只是想在Java 8中获取HTTP请求返回的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 --怎么会这么难呢?
发布于 2018-02-15 04:14:42
可以尝试使用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)
最终还是工作了。
发布于 2018-02-15 03:53:15
问题是这一部分:
// [...]
String json_string = EntityUtils.toString(response.getEntity());
试着这样做:
// [...]
String json_string = EntityUtils.toString((HttpEntity) response.getEntity());
不过,这只是猜测,因为我没有正在运行的代码,所以无法测试它。
https://stackoverflow.com/questions/48806580
复制