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

Anvend denne sender på den eksisterende template før kald, og bevar tjenestens URI, marshaller og andre indstillinger. Dette er Spring-WS 4.1.0 med Apache HttpClient 5. Hvis skabelonen retter sig mod en tilladt offentlig SOAP-tjeneste uden proxygodkendelse, kan en HTTP-adresse fra HTTP-proxylisten udfylde tilpasserens proxy.

withDefaults beholder den interceptor, der fjerner SOAP-leverede Content-Length og Transfer-Encoding, før Apache genererer HTTP-framing. Ved at tilføje proxy-tilpasseren der undgås det, at integrationen erstattes af en bar klient. Til en separat oprettet Apache-klient behold Spring-WS' interceptor til fjernelse af headere.

Afstem importer og sendergenerering. Ældre eksempler med HttpComponentsMessageSender/org.apache.http bruger Apache 4, ikke denne SimpleHttpComponents5MessageSender og HttpHost-grænseflade.

Behold en manuelt oprettet sender i SOAP-klientens levetid, og sørg for normal nedbrydning bagefter. En Spring-styret bean kan bruge containerens livscyklus. Andre skabeloner, der beholder andre sendere, bevarer deres egen transportkonfiguration.

Relaterede artikler