次のコード スニペットを使用して、http: //api.openweathermap.org/data/2.5/forecast/daily? lat=35&lon=139&cnt=10&mode=json から json データを受信しようとしています。
private WebTarget getWebTarget() {
Client client = JerseyClientBuilder.newClient();
return client.target("http://api.openweathermap.org/")
.path("data")
.path("2.5");
}
// new one method
Response response = getWebTarget()
.path("daily")
.queryParam("q", String.format("%s,%s", town, countryCode))
.queryParam("cnt", 10)
.queryParam("mode", "json")
.request().accept(MediaType.APPLICATION_JSON_TYPE).get();
WeatherForecast forecast = response.readEntity(WeatherForecast.class);
しかし、最後の行はスローします:
org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: メディア タイプ = アプリケーション/オクテット ストリーム、タイプ = クラス com.app.weather.providers.org.openweathermap.pojo.WeatherForecast、genericType = クラス com.app の MessageBodyReader が見つかりません.weather.providers.org.openweathermap.pojo.WeatherForecast.
pom.xml のジャージー依存関係:
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>2.4</version>
<!-- use the following artifactId if you don't need servlet 2.x compatibility -->
<!-- artifactId>jersey-container-servlet</artifactId -->
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json</artifactId>
<version>2.0-m05-1</version>
</dependency>
このコードは、アプリケーション サーバーの外部で実行されます。ありがとう。