2016-10-12 13 views
0

GoogleタイムゾーンAPIレスポンスを消費しようとしています。私は、このエラーに関連するスタックオーバーフロー上のすべての答えを試してみましたが、以下のエラーが偶数ビットを変更していません。ジャージーがJAVAオブジェクトへの応答をマッピングしていません

以下
ERROR [ClientResponse]:625 - A message body reader for Java class com.bystored.business.bo.timezone.TimeZoneResponse, and Java type class com.bystored.business.bo.timezone.TimeZoneResponse, and MIME media type application/json; charset=UTF-8 was not found 
2016-10-12 14:39:36 ERROR [ClientResponse]:627 - The registered message body readers compatible with the MIME media type are: 
application/json; charset=UTF-8 -> 
com.sun.jersey.json.impl.provider.entity.JSONJAXBElementProvider$App 
com.sun.jersey.json.impl.provider.entity.JSONArrayProvider$App 
com.sun.jersey.json.impl.provider.entity.JSONObjectProvider$App 
com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider$App 
com.sun.jersey.json.impl.provider.entity.JSONListElementProvider$App 
*/* -> 
com.sun.jersey.core.impl.provider.entity.FormProvider 
com.sun.jersey.core.impl.provider.entity.MimeMultipartProvider 
com.sun.jersey.core.impl.provider.entity.StringProvider 
com.sun.jersey.core.impl.provider.entity.ByteArrayProvider 
com.sun.jersey.core.impl.provider.entity.FileProvider 
com.sun.jersey.core.impl.provider.entity.InputStreamProvider 
com.sun.jersey.core.impl.provider.entity.DataSourceProvider 
com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General 
com.sun.jersey.core.impl.provider.entity.ReaderProvider 
com.sun.jersey.core.impl.provider.entity.DocumentProvider 
com.sun.jersey.core.impl.provider.entity.SourceProvider$StreamSourceReader 
com.sun.jersey.core.impl.provider.entity.SourceProvider$SAXSourceReader 
com.sun.jersey.core.impl.provider.entity.SourceProvider$DOMSourceReader 
com.sun.jersey.json.impl.provider.entity.JSONJAXBElementProvider$General 
com.sun.jersey.json.impl.provider.entity.JSONArrayProvider$General 
com.sun.jersey.json.impl.provider.entity.JSONObjectProvider$General 
com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General 
com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General 
com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$General 
com.sun.jersey.core.impl.provider.entity.EntityHolderReader 
com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider$General 
com.sun.jersey.json.impl.provider.entity.JSONListElementProvider$General 
com.sun.jersey.json.impl.provider.entity.JacksonProviderProxy 

は私のJavaクラスです:

public class TimeZoneResponse implements Serializable { 
private long dstOffset; 
private long rawOffset; 
private String status; 
private String timeZoneId; 
private String timeZoneName; 

@JsonProperty("dstOffset") 
public long getDstOffset() { 
    return dstOffset; 
} 

public void setDstOffset(long dstOffset) { 
    this.dstOffset = dstOffset; 
} 

@JsonProperty("rawOffset") 
public long getRawOffset() { 
    return rawOffset; 
} 

public void setRawOffset(long rawOffset) { 
    this.rawOffset = rawOffset; 
} 

@JsonProperty("status") 
public String getStatus() { 
    return status; 
} 

public void setStatus(String status) { 
    this.status = status; 
} 

@JsonProperty("timeZoneId") 
public String getTimeZoneId() { 
    return timeZoneId; 
} 

public void setTimeZoneId(String timeZoneId) { 
    this.timeZoneId = timeZoneId; 
} 

@JsonProperty("timeZoneName") 
public String getTimeZoneName() { 
    return timeZoneName; 
} 

public void setTimeZoneName(String timeZoneName) { 
    this.timeZoneName = timeZoneName; 
} 

@Override 
public String toString() { 
    return "TimeZoneResponse{" + 
      "dstOffset=" + dstOffset + 
      ", rawOffset=" + rawOffset + 
      ", status='" + status + '\'' + 
      ", timeZoneId='" + timeZoneId + '\'' + 
      ", timeZoneName='" + timeZoneName + '\'' + 
      '}'; 
} 
} 

ジャージークライアントのGETメソッドは以下の通りです:

public static <T extends Object> T get (String url, Map<String, String> queryParams, Map<String, String> headers, Class<? extends T> type) { 
    Client client = Client.create(); 
    WebResource webResource = client.resource(url); 

    if (queryParams != null) { 
     for (String key : queryParams.keySet()) { 
      webResource = webResource.queryParam(key, queryParams.get(key)); 
     } 
    } 

    WebResource.Builder builder = webResource.getRequestBuilder(); 
    if(headers != null && !headers.isEmpty()) { 
     for(Map.Entry<String, String> entry : headers.entrySet()) { 
      builder = webResource.header(entry.getKey(), entry.getValue()); 
     } 
    } 

    return builder.accept(MediaType.APPLICATION_JSON).get(type); 

} 

私はpomjersey-serverjersey-bundlejersey-jsonの依存関係を持っています。

答えて

1

サーバー上POJOMappingFeatureを設定するのと同様に、あなたはまた、その後、私はジャージー1を使用するので、上記は動作しませんので、もしそれが、しばらくしているクライアントに

ClientConfig config = new DefaultClientConfig(); 
config.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, true); 
Client client = Client.create(config); 

を、それを設定する必要がありますconfig.getProperties()を使用してくださいが、私はそれがgetFeaturesであるべきだと思います。

+0

私は私のweb.xmlに '' ​​com.sun.jersey.api.json.POJOMappingFeature を持って、私は再びこれを行うために必要なのですか? – MDaniyal

+0

私は上に示したクライアントのためにそれが必要です。あなたが直面しているエラーはクライアントエラーです –

+0

Google Apiはこれを必要としていますか? – MDaniyal

関連する問題