我正在尝试使用两种不同的响应来消费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)
任何线索都会有所帮助
由于