質問

AndroidAnnotationsとSpring Restテンプレートを使用してRESTFULのサービスを消費するAndroidアプリケーションを持っています。

サービスは正しく消費されていますが、RESTfulサービスが未処理の例外をスローしている場合、Androidアプリケーションは実行を停止し、サービス消費を網羅しています。

Android-App:

@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;
}
.

私は、例外が安らかなサービスで扱われていないことを知っていますが、私のAndroidアプリケーションはこのタイプの問題をキャッチすることができ、そしてユーザーに優しいメッセージを表示したいです。 しかし、Try 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)
.

Gitリポジトリプロジェクト全体を見たい場合: https://github.com/veniltonjr/msplenging

もう、ありがとう!

役に立ちましたか?

解決

サーバの例外の場合には、ユーザに優しいメッセージを表示する方法Jerseyからエラーステータスコードを返すことであり、その後、Android側がこの応答を処理し、問題が発生したことをユーザーに表示するためのアクションを実行します。

soあなたのジャージーコードでは、例外処理を追加できます。

@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側では、エラーエンティティ文字列"Got some errors due to ...!"をキャッチすることができ、次に何が起こったのかについて適切なメッセージをユーザーに表示できます。例えば:

Androidサイド:

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

これは、REST例外の場合には、Androidクライアントがエラーを処理してユーザーにメッセージを表示することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top