0

Spring for Android を使用して REST サービスからデータを取得しようとしています。しかし、私は問題に直面しています。私もRobospiceを使用しています-そのため、次のような方法があります:

 public FunkyThingsList loadDataFromNetwork() throws Exception {
        String baseURI =context.getResources().getString(R.string.baseWebServiceURI);
                String uri = baseURI + "/FunkyThings/date/" + dateToLookUp.toString("yyyy-MM-dd");
        RestTemplate restTemplate = getRestTemplate();
        final HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
        headers.setAccept( Arrays.asList(MediaType.APPLICATION_JSON));
        HttpAuthentication authHeader = new HttpBasicAuthentication(username, password);
        headers.setAuthorization(authHeader);

        // Create the request body as a MultiValueMap
        MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();
        HttpMessageConverter<String> stringConverter = new StringHttpMessageConverter();
        FormHttpMessageConverter formConverter = new FormHttpMessageConverter();
        List<HttpMessageConverter<?>> msgConverters = restTemplate.getMessageConverters();
        msgConverters.add(formConverter);
        msgConverters.add(stringConverter);
        restTemplate.setMessageConverters(msgConverters);

        HttpEntity<?> httpEntity = new HttpEntity<Object>(map, headers);
        final ResponseEntity<FunkyThingsList> responseEntity = restTemplate.exchange(url, HttpMethod.GET, httpEntity,FunkyThingsList.class);

        return responseEntity.getBody();
    }

残念ながら、これは機能していません。次の例外がスローされます。

org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [com.MyProject.DataClassPojos.RoboSpiceArrayLists.FunkyThingsList] and content type [application/json;charset=utf-8]

私のグーグルに基づいて、メッセージコンバーターを追加する必要があると感じました。どのメッセージ コンバーターが必要なのか、またはどこに追加するのかがわかりません。

4

2 に答える 2

1

デフォルトの JSON の場合HttpMessageConverter、Jackson 1 または Jackson 2 のいずれかをクラスパスに追加する必要があります。

それ以外の場合は、他の JSON ライブラリを追加HttpMessageConverterして、逆シリアル化を実行できる独自の JSON ライブラリを作成できます。に追加しますRestTemplate。コンストラクタまたはこのメソッドのいずれかを使用できます。

于 2014-08-05T14:42:00.707 に答える
0

Spring for Androidチュートリアルに従っていて、同じエラーが発生した場合、これが役立つ可能性があります。

MainActivity.java で:

...
RestTemplate restTemplate = new RestTemplate();
MappingJacksonHttpMessageConverter converter = new
MappingJacksonHttpMessageConverter();    
converter.setSupportedMediaTypes(Collections.singletonList(MediaType.TEXT_HTML));
restTemplate.getMessageConverters().add(converter);

呼び出しでコンバーターを使用し、メディア タイプとして TEXT_HTML を使用するように構成してから、コンバーターのインスタンスを使用します。

また、チュートリアルは少し古くなっているため、build.gradleでここで提案されている最新バージョンを使用してください。

dependencies{
 //Spring Framework for REST calls and Jackson for JSON processing
 compile 'org.springframework.android:spring-android-rest-template:2.0.0.M3'

 compile 'com.fasterxml.jackson.core:jackson-databind:2.4.1.3'
}
repositories {
 maven {
    url 'https://repo.spring.io/libs-milestone'
 }
}
于 2018-02-20T14:58:32.220 に答える