サーバー側に Oracle 11g と Apex を使用した REST Web サービスがあります。クライアント側では、Android 向けに開発を行っており、Spring 1.0.1 および Jackson 2.2.3 ライブラリを使用して残りの Web サービスのリクエストを管理し、json データを pojo に変換します。
Webサービスが「クエリ」の場合、非常にうまく機能します。resultset-Json データは問題なく Pojo の配列に変換されます。しかし、オラクルの手順で同じことをしようとすると、例外が発生して失敗します。
プロシージャによって返される Json データは次のとおりです。
{"item":"{\r\n \"user\" : \"{john}\",\r\n \"profile\" : \"nothing\"\r\n}"}
オンライン Json バリデーターを試しましたが、Json データは有効なようです。ヘッダーでは、タイプが「application/json」であることも確認できます。
pojo オブジェクトは次のとおりです。
public class User {
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
private String user;
public String getProfile() {
return profile;
}
public void setProfile(String profile) {
this.profile = profile;
}
private String profile;
}
Web サービスを呼び出し、json を pojo に変換しようとするコードは次のとおりです (Spring の例からコピー)。
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
User users = restTemplate.getForObject(url, User.class);
最後に、「getForObject」を実行しようとしたときの例外:
org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [com.xxx.xxx] and content type [text/plain;charset=iso-8859-1]
Jackson ライブラリの代わりに Gson ライブラリで同じことをしようとしましたが、同じ例外が trown です。数日前からブロックされてます…
何か案は?私が間違っていることは何ですか?
前もって感謝します、