2016-05-02 1 views
0

リクエストを処理するためにSpring RESTを使用しています。 は、ここに私のコードサンプルです:私は返された値と200のステータスやJSONを持っているときレスポンスエンティティがエラー404にもかかわらずnullエンティティ

RestTemplate restTemplate = new RestTemplate(); 
HttpEntity entity = new HttpEntity(headers); 
ResponseEntity<String> responseEntity = null; 
     try { 
      responseEntity = restTemplate.exchange(apiAddress + "action?uniqueId=" + id, HttpMethod.GET, entity, String.class); 

     }catch (RestClientException ex) { 
      System.out.println(responseEntity.toString()); 
      String errorMessage = ex.getMessage(); 
     } 

すべてがOKです。 問題は、たとえば、404 JSONです。 デバッグ中に404が発生すると、responseEntityがまだヌルなので、エラーコードを取得できないことがわかりました。また、私はそれが送信されていることを知っているサーバーからJSON応答を取得することができません。

私は200の応答でうまく動作するHTTPリクエスタを試しました - 私に要求されたデータと404の応答を与え、私にエラー記述のあるJSONを与えました。

よろしく、 カロル

答えて

0

私は何が起こっているかを把握するために管理しています。

私はResponseErrorHandlerを実装している:次に

public class VariousErrorsResponseHandler implements ResponseErrorHandler { 
@Override 
public boolean hasError(ClientHttpResponse clientHttpResponse) throws IOException { 
    if(clientHttpResponse.getStatusCode() == HttpStatus.NOT_FOUND || clientHttpResponse.getStatusCode() == HttpStatus.UNAUTHORIZED) return false; 
    else return true; 
} 

@Override 
public void handleError(ClientHttpResponse clientHttpResponse) throws IOException { 
    System.err.println(clientHttpResponse.getStatusCode() + "\n" + clientHttpResponse.getStatusText()); 
} 
} 

restTemplateのエラーハンドラとして設定:

restTemplate.setErrorHandler(new VariousErrorsResponseHandler()); 

そして

:)行わ は、私はそれが他の誰かを助けるかもしれないことを願っています
関連する問題