2016-12-02 5 views
0

GWTPレスディスパースをResourceDelegateで使用しています。クライアントのRESTリクエストですべての例外を捕捉したいと思います。 私のRESTのバックエンド・リターン:RESTディスパッチGWTプラットフォーム:例外ハンドラからhttpステータスコードを取得

  • 401または403のステータスコードを何の権限が/他 エラーので

ため

  • 500を禁じられていない場合、私はRestDispatchAsyncModuleに共通のハンドラを追加しました:

    new RestDispatchAsyncModule.Builder().exceptionHandler(MyRestExceptionHandler.class); 
    

    MyRestExceptionHandler.java:

    public class MyRestExceptionHandler implements ExceptionHandler { 
        @Override 
        public Status onFailure(Throwable e) { 
         if (e instanceof ActionException){ 
          ActionException a = (ActionException)e; 
          // How to get HTTP status code and response body here? 
         } 
         return null; 
        } 
    } 
    

    すべてのREST例外は、ActionExceptionクラスのインスタンスであることがわかりました。 MyRestExceptionHandler内でHTTPステータスコードとhttp応答本文を取得するにはどうすればよいですか?

  • 答えて

    0

    解決策は、ExceptionHandlerではなくRestDispatchHooksを使用することです。

    AppRestDispatchHooks.java:モジュールのインストール

    public class AppRestDispatchHooks implements RestDispatchHooks { 
        @Override 
        public void onExecute(RestAction<?> action) { 
        } 
    
        @Override 
        public void onSuccess(RestAction<?> action, Response response, Object result) { 
        } 
    
        @Override 
        public void onFailure(RestAction<?> action, Response response, Throwable caught) { 
         GWT.log("Status code:"+ response.getStatusCode()); 
        } 
    } 
    

    install(new RestDispatchAsyncModule.Builder() 
         .dispatchHooks(AppRestDispatchHooks.class) 
         .build()) 
    
    関連する問題