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);

Apliqueu aquest emissor a template existent abans de les crides, conservant l'URI del servei, el marshaller i altres ajustos. Això és Spring-WS 4.1.0 amb Apache HttpClient 5. Si la plantilla apunta a un servei SOAP públic permès sense autenticació de proxy, una adreça HTTP de la llista de proxys HTTP pot omplir el proxy del personalitzador.

withDefaults manté l'interceptor que elimina el Content-Length i el Transfer-Encoding proporcionats per SOAP abans que Apache generi l'emmarcat HTTP. Afegir-hi el personalitzador de proxy evita substituir aquesta integració per un client nu. Per a un client Apache construït per separat, conserva l'interceptor d'eliminació de capçaleres de Spring-WS.

Feu coincidir les importacions i la generació de l'emissor. Els exemples antics amb HttpComponentsMessageSender/org.apache.http fan servir Apache 4, no aquest SimpleHttpComponents5MessageSender ni la interfície HttpHost.

Conserveu un emissor creat manualment durant tota la vida del client SOAP i organitzeu-ne la destrucció normal després. Un bean gestionat per Spring pot utilitzar el cicle de vida del contenidor. Altres plantilles que conserven altres emissors mantenen la seva pròpia configuració de transport.

Articles relacionats