2016-12-02 12 views
0

GWTP 나머지 DisSpath를 ResourceDelegate와 함께 사용하고 있으며 클라이언트 REST 요청에서 모든 예외를 catch하려고합니다. 내 REST 백엔드 반환 : 다른 오류 그래서 GWT REST 디스패치 플랫폼 : 예외 처리기에서 http 상태 코드 가져 오기

에 대한

  • (500)를 금지 권한 부여는 /, 내가 RestDispatchAsyncModule에 공통 핸들러를 추가하지 않은 경우

    • 401 또는 403 상태 코드 :

      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())