org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [tc.wo.mbseo.exchangediary.https.datas.TestData] and content type [text/html]
몇일 동안 고생했던 오류 ㅠ
@Rest(rootUrl = "주소",converters = {GsonHttpMessageConverter.class} )
public interface HttpTest {
...
...
...
}
androidannotations 에서 rest templete 을 사용하는데 계속 이 오류 뜨는 경우.
서버에서 가져오는 값이 text/html 으로 오고 있기때문에
GsonHttpMessageConverter 으로 변환할수 없기때문에 발생하는 오류입니다.
1. 텍스트에 대한 대응 추가.
이럴때에는 "converters =" 에서
StringHttpMessageConverter.class 를 추가하여 텍스트에 대한 대응을 추가하면
리턴받는 값이 text 값으로 정상적으로 들어오게 됩니다.
@Rest(rootUrl = "주소",converters = {GsonHttpMessageConverter.class, StringHttpMessageConverter.class} )
public interface HttpTest {
...
...
...
}
2. server 에서 수정 하는 방법
사실상 서버쪽에서 발생된 오류가 볼수있으며, json 포멧으로 넘기고 타입은 text/html 을 넘기기 때문에
발생된 것이므로 서버쪽에서 header 에서 추가해주면 됩니다.
header('Content-Type: application/json')
3. android 쪽에서 수정하는 방법
RestTemplate getRestTemplate();
void setRestTemplate(RestTemplate restTemplate);
를 추가하여 template에 접근할수있도록 변경한이후,
GsonHttpMessageConverter converter = new GsonHttpMessageConverter();
final List<MediaType> supportedMediaTypes = new LinkedList<MediaType>(converter.getSupportedMediaTypes());
final MediaType mediaType = new MediaType( MediaType.TEXT_HTML.getType() );
supportedMediaTypes.add(mediaType);
converter.setSupportedMediaTypes(supportedMediaTypes);
httpTest.getRestTemplate().getMessageConverters().add(converter);
GsonHttpMessageConverter 에서 파싱할수있는 타입을 추가해주시면 됩니다.
'개발 > Android' 카테고리의 다른 글
안드로이드 GCM PUSH 구현 v.2015.10.15 (0) | 2015.10.15 |
---|---|
구글 애드센스 PIN 번호 발급 (0) | 2015.08.12 |
안드로이드 갤러리에서 특정 포멧 이미지만 가져오기 ( jpg, jpeg, png ) (0) | 2015.06.19 |
안드로이드 MINI_TYPE 리스트 (0) | 2015.06.19 |
안드로이드 Dialog 테마로 구현. (0) | 2015.06.19 |