문제

Androvingannotations 및 Spring Rest Template을 사용하여 RESTful 서비스를 소비하는 Android 응용 프로그램이 있습니다.

서비스가 제대로 소비되지만, RESTful 서비스가 처리되지 않은 예외를 던지면 Android 응용 프로그램이 서비스 소비를 포함하는 Catch를 잡는 데있어

에도 안드로이드 응용 프로그램이 중지됩니다.

안드로이드 응용 프로그램 :

@RestService
protected StudentRESTfulClient mStudentRESTfulClient;

@Click(R.id.register_button)
public void register(Student user) {
    try {
        this.mStudentRESTfulClient.insert(user);
    } catch (Exception exception) {
        // This block is not executed...
    }
}
.

restful-app :

@POST
public Student insert(Student entity) {
    this.getService().insert(entity); // Throw the exception here!
    return entity;
}
.

나는 예외가 RESTful 서비스에서 치료되지 않고 안드로이드 애플리케이션이 이러한 유형의 문제를 잡을 수 있고 사용자에게 친숙한 메시지를 표시 할 수 있기를 바랍니다. 그러나 TRACK CATCH :

에도 다음과 같은 오류가 발생합니다.
01-11 00:44:59.046: E/AndroidRuntime(5291): FATAL EXCEPTION: pool-1-thread-2
01-11 00:44:59.046: E/AndroidRuntime(5291): org.springframework.web.client.HttpServerErrorException: 500 Internal Server Error
01-11 00:44:59.046: E/AndroidRuntime(5291): at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:78)
01-11 00:44:59.046: E/AndroidRuntime(5291): at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:524)
.

전체 프로젝트를보고 싶다면

: https://github.com/veniltonjr/msplearning

이미 감사합니다!

도움이 되었습니까?

해결책

서버 예외가있는 경우 사용자에게 친숙한 메시지를 보여주는 방법은 저지에서 오류 상태 코드를 반환 한 다음 Android 측은이 응답을 처리하고 사용자에게 잘못된 메시지를 표시 할 수있는 작업을 수행 할 수 있습니다.

그래서 저지 코드에서 예외 처리를 추가 할 수 있습니다 :

@POST
public Response insert(Student entity) {
    Response r;
    try {
        this.getService().insert(entity); // Throw the exception here!
        r = Response.ok().entity(entity).build();
    } catch (Exception ex) {
        r = Response.status(401).entity("Got some errors due to ...!").build();
    }
    return r;
}
.

Android 측면에서 Error Entity String "Got some errors due to ...!"를 잡을 수 있고 일어난 일에 대해 사용자에게 적절한 메시지를 표시 할 수 있습니다.예 :

안드로이드 쪽 :

HttpClient client = new DefaultHttpClient();
HttpResponse response = client.execute(post);
String responseText = EntityUtils.toString(response.getEntity());
.

REST 예외의 경우 Android 클라이언트가 오류를 처리하고 사용자에게 메시지를 표시 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top