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 emisor ao template existente antes das chamadas, conservando o URI do servizo, o marshaller e outros axustes. Trátase de Spring-WS 4.1.0 con Apache HttpClient 5. Se o modelo apunta a un servizo SOAP público permitido sen autenticación de proxy, un enderezo HTTP da lista de proxies HTTP pode encher o proxy do personalizador.

withDefaults mantén o interceptor que elimina o Content-Length e o Transfer-Encoding proporcionados por SOAP antes de que Apache xere o enmarcado HTTP. Engadir alí o personalizador de proxy evita substituír esa integración por un cliente espido. Para un cliente Apache construído por separado, conserve o interceptor de eliminación de cabeceiras de Spring-WS.

Faga coincidir as importacións e a xeración do emisor. Os exemplos antigos con HttpComponentsMessageSender/org.apache.http usan Apache 4, non este SimpleHttpComponents5MessageSender nin a interface HttpHost.

Conserve un emisor creado manualmente durante toda a vida do cliente SOAP e organice a súa destrución normal despois. Un bean xestionado por Spring pode usar o ciclo de vida do contedor. Outros modelos que conservan outros emisores manteñen a súa propia configuración de transporte.

Artigos relacionados