簡體   English   中英

如何使用Jackson的ObjectMapper和Spring的RestTemplate處理各種響應?

[英]How to handle various responses with Jackson ObjectMapper and Spring's RestTemplate?

我正在使用Spring的RestTemplate和Jackson ObjectMapper使用REST服務。 問題是如果有錯誤,則返回的JSON與我期望的對象完全不同,因此失敗。 另外,我什至不能使用String.class,因為這會引發類似的錯誤。 我什至不知道響應是什么樣的,因為實際的請求引發了異常,因此我從沒有得到能夠檢查的響應。

這是一些代碼:

    String url = BASE_URL + USER_LOGIN_URL;

    HttpHeaders headers = new HttpHeaders();
    headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
    headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

    MultiValueMap<String, String> postData = new LinkedMultiValueMap<String, String>();
    // Postdata added here

    HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<MultiValueMap<String, String>>(postData, headers);

        UserInfo userInfo = restTemplate.postForObject(url, entity, UserInfo.class); // Doesn't work if not UserInfo

        // ** OR THE FOLLOWING **


        String response = restTemplate.postForObject(url, entity, String.class);
        logger.debug(response); // Never reaches here because ObjectMapper seems to expect a JSON object named "String"
        UserInfo userInfo = objectMapper.readValue(response, UserInfo.class);

我認為RestTemplate使用DefaultResponseErrorHandler來處理錯誤響應(以4或5開頭的代碼)。 拋出的實例HttpStatusCodeException與方法getResponseBodyAsString()

因此,您可以捕獲該異常並將響應提取為字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM