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

Ilapat ang sender na ito sa umiiral na template bago ang mga tawag, habang pinapanatili ang URI ng serbisyo, marshaller at iba pang setting. Ito ay Spring-WS 4.1.0 na may Apache HttpClient 5. Kung ang template ay naka-target sa isang pinapayagang pampublikong SOAP service na walang proxy authentication, maaaring punan ng HTTP address mula sa listahan ng HTTP proxy ang proxy ng customizer.

Pinapanatili ng withDefaults ang interceptor na nag-aalis ng Content-Length at Transfer-Encoding na ibinibigay ng SOAP bago gumawa ng HTTP framing ang Apache. Ang pagdaragdag ng proxy customizer doon ay umiiwas na mapalitan ang integrasyong iyon ng hubad na client. Para sa hiwalay na ginawang Apache client, panatilihin ang header-removal interceptor ng Spring-WS.

Itugma ang mga import at ang paggawa ng sender. Ang mas lumang mga halimbawa na may HttpComponentsMessageSender/org.apache.http ay gumagamit ng Apache 4, hindi ang SimpleHttpComponents5MessageSender at HttpHost interface na ito.

Panatilihin ang sender na ginawa sa kamay sa buong buhay ng SOAP client at ayusin ang normal na pagkasira nito pagkatapos. Ang bean na pinamamahalaan ng Spring ay maaaring gumamit ng lifecycle ng container. Ang ibang mga template na may ibang sender ay pinapanatili ang sarili nilang transport configuration.

Kaugnay na mga artikulo