Ошибка SOAP Spring Boot Webservice: для Content-Encoding должно быть задано gzip - PullRequest
0 голосов
/ 05 декабря 2018

Я использую Spring Boot для вызова веб-службы SOAP и отправляю файл в конверте.Я использую JAXB для создания XML.Когда я отправляю запрос на сервер, он возвращает ошибку, которая, я думаю, не приходит с конечной точки:

Ошибка запуска ApplicationContext.Чтобы отобразить отчет об условиях, перезапустите приложение с включенной отладкой.2018-12-05 09:57:47 |ОШИБКА |главная |work.boot.SpringApplication: 858 |Сбой при запуске приложенияspringframework.boot..varengold.cdl.mvp.MvpApplication.main (MvpApplication.java:21) Причина: org.springframework.ws.soap.client.SoapFaultClientException: ошибка: данные HTTP должны быть сжаты; Content-Encoding должен быть установлен в gzip

Как установить кодировку содержимого в gzip?

Это мой код:

@SpringBootApplication

@Slf4j

public class MvpApplication {

public static void main(String[] args) {

SpringApplication.run(MvpApplication.class, args);

}

 @Bean
CommandLineRunner lookup(SOAPConnector soapConnector , Config config) {
return args -> {
  SubmitDATTRA request = new SubmitDATTRA();
  FileDataSource ds = new FileDataSource(config.getReportFilePath() );
  request.setDatei(new DataHandler(ds));
  SubmitDATTRAResponse response =(SubmitDATTRAResponse) soapConnector.callWebService(Config.TEST_URL, request);


    };
  }
}

тип содержимого (sysout): приложение / октет-поток.Файл представляет собой файл gzip.Я думаю, что я близок к решению, но я не знаю, как сказать Spring, что он должен использовать content-Encoding = gzip

Вот SOAPConnector

import javax.jws.WebService;
import org.springframework.ws.client.core.WebServiceTemplate;
import org.springframework.ws.client.core.support.WebServiceGatewaySupport;

public class SOAPConnector extends WebServiceGatewaySupport {
   public Object callWebService(String url, Object request){
   return getWebServiceTemplate().marshalSendAndReceive(url, request);
   }

}

Мой класс конфигурации:

@Configuration
@Getter
public class Config {

  public static final String PROD_URL = "https://portal.mvp.bafin.de:444/services/ws/a26mifir";
  public static final String TEST_URL = "https://portal.mvp.bafin.de:444/services/ws/t_a26mifir";

  @Value("${report.file.path}")
  private String reportFilePath;

  @Bean
  public Jaxb2Marshaller marshaller() {
    Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
    marshaller.setContextPath("de.acme.ws");
    return marshaller;
  }

  @Bean
  public SOAPConnector soapConnector(Jaxb2Marshaller marshaller) {
    SOAPConnector client = new SOAPConnector();
    client.setDefaultUri(TEST_URL);
    client.setMarshaller(marshaller);
    client.setUnmarshaller(marshaller);
    return client;
  }
}

Я читал и вдохновлялся этой статьей: https://howtodoinjava.com/spring-boot/spring-soap-client-webservicetemplate/

...