Я создал клиент Feign EmployeeServiceClient.java, как показано ниже.
EmployeeServiceClient.java
@FeignClient(name = "employeeclient", url = "https://internel.omnesys.org")
public interface EmployeeServiceClient {
@RequestMapping(method = RequestMethod.GET, value = "/v1/employees")
List<EmployeeDetails> getEmployeeDetails();
}
EmployeeDetails.java
public class EmployeeDetails {
private Employee employee;
private String empId;
// getters and setters
}
Employee.java
public class Employee {
private String name;
private String firstName;
private String lastName;
private String city;
// getters and setters
}
Обслуживание https://internel.omnesys.org/v1/employees (это служба REST в интрасети, управляемая другой командой) дает мне время ответа, как показано ниже
)}]',
[{"employee":{"name":"Emp1","firstName":"firstName1","lastName":"lastName1","city":"city1"},"empId":"empId123"},{"employee":{"name":"Emp2","firstName":"firstName2","lastName":"lastName2","city":"city2"},"empId":"empId456"}]
Я получаю симулированное исключение, потому что ответ службы содержит дополнительный )}]',
в начальном
Я попросил сервисную команду удалить эти недопустимые символы, но они сказали, что удалить его невозможно, поскольку он был размещен специально для некоторых других требований, и попросили меня обработать его с нашей стороны.
Может ли кто-нибудь помочь мне в этом
Я вижу три варианта:
Настройте своего клиента с помощью нестандартная конфигурация и предоставьте свой собственный декодер, который обработает сумасшедший ответ;) Расширьте ResponseEntityDecoder и добавьте свою особую обработку ответа.
Измените подпись метода, чтобы вернуть feign.Response, и обработайте его самостоятельно:
@FeignClient(name = "employeeclient", url = "https://internel.omnesys.org") public interface EmployeeServiceClient { @RequestMapping(method = RequestMethod.GET, value = "/v1/employees") feign.Response getEmployeeDetails(); }
Обратите внимание: для 2. и 3. обработки ошибок не будет, и вы должны позаботиться об этом.
Также рассмотрите возможность добавления адаптера, если вы не выбрали первый вариант, чтобы скрыть синтаксический анализ и обработку исключений и обеспечить текущую сигнатуру метода.
Попросите команду предоставить остальные api, которые вы пытаетесь использовать, исправить их json.