Они предоставляют доступ к следующему wsdl: https://mdfe-homologacao .svrs.rs.gov.br/ws/MDFeRecepcaoSinc/MDFeRecepcaoSinc.asmx?wsdl
Затем я сгенерировал соответствующую заглушку с помощью инструмента wsimport, которая состоит из следующего:
- MDFeRecepcaoSinc.java
- MdfeRecepcaoResult.java
- MDFeRecepcaoSincSoap12.java (интерфейс)
ObjectFactory.java - package-info.java
Код: Выделить всё
ObjectFactory of = new ObjectFactory();
JAXBElement jaxb = of.createMdfeDadosMsg("?");
MDFeRecepcaoSinc recepcao = new MDFeRecepcaoSinc();
MDFeRecepcaoSincSoap12 soap = recepcao.getMDFeRecepcaoSincSoap12(
// new AddressingFeature(true),
// new MTOMFeature(false),
// new RespectBindingFeature(true)
);
System.out.println(soap.mdfeRecepcao(jaxb.getValue()).getContent());
Мне удалось заставить его работать на SoapUI с точно таким же конвертом запроса, и он возвращает правильный XML с несколькими тегами внутри retMDFe.
Похоже, он подключается к их серверу. из моего Java-клиента, поскольку тег retMDFe отсутствует в файле WSDL или какой-либо созданной мной заглушке, и поскольку я больше не получаю ошибку 403 - Forbidden (правильно настроил системное хранилище ключей) .
К сожалению, этот веб-сервис разрешает только соединения, выданные с помощью цифрового сертификата.
Я подозреваю, что ошибка может быть связана с сопоставлением конечной точки. в класс MdfeRecepcaoResult.
Я пробовал несколько вещей:
- включение различных WebServiceFeatures в конструкторе reepcao.getMDFeRecepcaoSincSoap12, хотя только MTOMFeature как true вернуло что-то другое: клиент получил ошибку SOAP от сервера: сервер не смог обработать запрос. ---> Данные на корневом уровне недействительны. Строка 1, позиция 1. См. журнал сервера, чтобы узнать более подробную информацию о точной причине сбоя.;
- изменение типа возвращаемого значения mdfeRecepcao с MdfeRecepcaoResult на String, что дало мне пустая строка;
- комментирование аннотаций к mdfeRecepcao, которое продолжало давать мне ответ [[retMDFe: null]];
- также пробовал передавать разные строки XML непосредственно в метод Soap.mdfeRecepcao(), но получил те же результаты.
Подробнее здесь: https://stackoverflow.com/questions/790 ... ap-request