Я пытаюсь создать оболочку API для веб-ресурса.У меня проблемы с хранением возвращаемого файла JSON.В частности, у меня много путаницы, потому что я пытаюсь использовать новейшую версию Jersey 2.27, и большая часть доступных руководств в Интернете предназначена для более ранних версий, которые, как представляется, не полностью совместимы.
Веб-сайт RESTfulресурс возвращает JSON;класс Company
сделан для его получения.
Вот что у меня есть.Зависимости:
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.27</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
<version>2.27</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.27</version>
</dependency>
Код:
import org.glassfish.jersey.client.JerseyClientBuilder;
import org.glassfish.jersey.jackson.JacksonFeature;
import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.JacksonJsonProvider;
public class OpenCorpAPIClient {
private final String BASE_URL = ...;
private final String API_PARAM = ...;
private final String api_key;
private Client client;
public APIClient(String api_key) {
this.api_key = api_key;
client = JerseyClientBuilder.newClient()
.register(new JacksonJsonProvider())
.register(JacksonFeature.class);
}
public Company getCompany(String resource_uri) {
WebTarget target = client.target(BASE_URL)
.path(resource_uri)
.queryParam(API_PARAM, api_key);
Response response = target.request(MediaType.APPLICATION_JSON_TYPE)
.get();
>> return response.readEntity(Company.class);
}
Вот ошибка, которую я получаю при компиляции.Расположение ошибки выделено в приведенном выше коде.
[ERROR] /opt/path/to/Project/src/main/java/package/name/APIClient.java:[107,24] cannot find symbol
symbol: method readEntity(java.lang.Class<com.pwc.kyv.opencorp.Company>)
location: variable response of type javax.ws.rs.core.Response
Объект Response
имеет функцию readEntity(Class<T> entityType)
, которую я пытаюсь вызвать.В этом отношении, если я изменю вызов на базовый тип, такой как String, я получу ту же ошибку.
Что я делаю не так, здесь?Как я могу сказать Джерси / Джексону проанализировать этот JSON как определенный тип объекта Java?