Получение исключения из службы отдыха в строковой переменной - PullRequest
0 голосов
/ 09 октября 2018

У меня есть этот запрос JSON в Java.Я буду использовать шаблон отдыха с моим URL и этим запросом.

{  
   "searchRequest":{  
      "header":{  
         "agency":"1111",
         "agent":"2222";
         "from":"0";
         "size":"15"
      },
      "requestParam":{  
         "firstName":"JOHN",
         "lastName":"PAK",
         "dob":"",
         "driverLicense":"",
         "membershipNumber":"",
         "phoneNumbers": "null",
         "addresses":"null"

      }
   }
}

CASE 1 : всякий раз, когда я получаю успешный ответ, я получаю тот же JSON, который дает мой шаблон отдыхапеременная ответа.

public @ResponseBody String mpdValidate(@RequestBody String inputRequest, @RequestHeader String url)
            throws JsonParseException, JsonMappingException, IOException, JSONException {
        System.out.println(inputRequest);
        System.out.println(url);

        String response = null;

            if (url == null || url.isEmpty()) {
                url = "myURL";
            }

            try {
                HttpHeaders headers = new HttpHeaders();
                headers.set("X-ApplicationContext",
                        "{\"userId\":\"user\",\"transactionType\":\"realtime\",\"application\":\"app\",\"subSystem\":\"mpd\",\"address\":\"1.0.0.0\",\"correlationId\":\"0f333c\"} ");
                HttpEntity<String> request = new HttpEntity<String>(inputRequest, headers);

                response = restTemplate.postForObject(url, request, String.class);

            } catch (Exception e) {
                response = e.getMessage();
            }

        return response;
    }

CASE 2 : И когда неправильный запрос оформлен и ответ не получен, остальной шаблон возвращает этот ответ.

{
   "httpCode": 400,
   "httpMessage": "Bad Request",
   "moreInformation": "Request parameter is null",
   "timeStamp": 1539072063795
}

Но переменная ответа возвращает значение NULL и входит для перехвата исключения блока с нулевым указателем.

Я хочу, чтобы вышеприведенный JSON в строковом формате для моей переменной ответа.

Может кто-нибудь помочь?

Ответы [ 2 ]

0 голосов
/ 09 октября 2018
try {
    // ...
} catch (HttpClientErrorException expection) {
    response = expection.getResponseBodyAsString();
}

Вам необходимо обработать HttpClientErrorException (или его родительский элемент RestClientResponseException) и извлечь ответ с помощью HttpClientErrorException#getResponseBodyAsString.

0 голосов
/ 09 октября 2018

Вы должны попробовать вот так,

// REST Request
        try {
            restTemplate.postForObject(requestUrl, postBody, Void.class);
        } catch (RestException restException) {
            Logger.error(this, "RestException: " + restException.getRestError().toString());
    response = restException.getRestError().toString();
        }
...