使用两种不同的响应来消息Rest api

时间:2018-06-08 06:31:16

标签: java json rest resttemplate

我正在尝试使用两种不同的响应来消费api。当提供适当的输入和标题时,它会给出一个json对象。使用下面的代码可以正常工作。

但是当缺少其中一个输入或标题时,api会返回其他json,这会在通过Postman进行操作时指出错误详细信息,但客户端代码无法实现。它抛出异常,但是api应该返回带有错误详细信息的json。

首先我尝试使用postForobject(),然后更改为exchange(),假设postForObject返回对象并且api未获得预期的对象格式。所以尝试使用String.clas而不是特定的类

通过点击相同的网址可以做些什么来获得两个不同的json对象?

成功时:

{
    "contacts": [
        {
            "input": "98########",
            "status": "valid"
        }
    ]

}
输入或标题丢失时

"errors": [
        {
            "code": 1###,
            "title": "Access denied",
            "details": "invalid deatils"
        }
    ]

下面是我的代码:

 public static void main(String[] args) throws Exception {

        RestTemplate restTemplate = new RestTemplate();
        String check_Contact_Async = "https://port/contacts/";

        sslByPass();
        //headers = setHeaders();
        contactsDTO = getInput(); 

        final HttpEntity<ContactsDTO> entity = new HttpEntity<ContactsDTO>(contactsDTO, headers);

        try {
            //WsResponse res = restTemplate.postForObject(check_Contact_Async, entity, WsResponse.class);

            ResponseEntity<String> responseEntity = restTemplate.exchange(
                    check_Contact_Async, HttpMethod.POST, entity,
                       String.class);

            System.out.println(responseEntity);
        } catch (Exception exception) {

            System.out.println(exception);
        } 
    }



Exception in thread "main" org.springframework.web.client.HttpClientErrorException: 401 Unauthorized
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:91)
    at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:667)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:620)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:580)
    at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:498)
    at com.websystique.springmvc.apitest.Example.main(Example.java:120)

任何线索都会有所帮助

由于

0 个答案:

没有答案