import org.apache.hc.core5.http.HttpHost;
import org.springframework.ws.transport.http.HttpComponents5ClientFactory;
import org.springframework.ws.transport.http.SimpleHttpComponents5MessageSender;

var factory = HttpComponents5ClientFactory.withDefaults();
factory.addClientBuilderCustomizer(builder ->
    builder.setProxy(new HttpHost("http", "proxy.example", 8080)));

var sender = new SimpleHttpComponents5MessageSender(factory);
template.setMessageSender(sender);

Aplique este remetente ao template existente antes das chamadas, preservando o URI do serviço, o marshaller e outras configurações. Trata-se do Spring-WS 4.1.0 com Apache HttpClient 5. Se o modelo visa um serviço SOAP público permitido sem autenticação de proxy, um endereço HTTP da lista de proxies HTTP pode preencher o proxy do personalizador.

withDefaults mantém o interceptor que remove o Content-Length e o Transfer-Encoding fornecidos pelo SOAP antes de o Apache gerar o enquadramento HTTP. Adicionar ali o personalizador de proxy evita substituir essa integração por um cliente nu. Para um cliente Apache construído separadamente, mantenha o interceptor de remoção de cabeçalhos do Spring-WS.

Faça coincidir as importações e a geração do remetente. Os exemplos mais antigos com HttpComponentsMessageSender/org.apache.http usam Apache 4, e não este SimpleHttpComponents5MessageSender nem a interface HttpHost.

Mantenha um remetente criado manualmente durante toda a vida do cliente SOAP e organize a sua destruição normal depois. Um bean gerido pelo Spring pode usar o ciclo de vida do contentor. Outros modelos que mantêm outros remetentes conservam a sua própria configuração de transporte.

Artigos relacionados