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

ใช้ตัวส่งนี้กับ template ที่มีอยู่ก่อนการเรียก โดยคง URI ของบริการ marshaller และการตั้งค่าอื่น ๆ นี่คือ Spring-WS 4.1.0 กับ Apache HttpClient 5 หากเทมเพลตเล็งบริการ SOAP สาธารณะที่อนุญาตโดยไม่มีการพิสูจน์ตัวตนพร็อกซี ที่อยู่ HTTP จากรายการพร็อกซี HTTPสามารถเติมพร็อกซีของตัวปรับแต่งได้

withDefaults คงตัวดักที่ลบ Content-Length และ Transfer-Encoding ที่ SOAP จัดให้ก่อนที่ Apache จะสร้างกรอบ HTTP การเพิ่มตัวปรับแต่งพร็อกซีตรงนั้นช่วยหลีกเลี่ยงการแทนที่การผสานนั้นด้วยไคลเอนต์เปล่า สำหรับไคลเอนต์ Apache ที่สร้างแยกต่างหาก ให้คงตัวดักลบส่วนหัวของ Spring-WS

ทำให้ import และการสร้างตัวส่งสอดคล้องกัน ตัวอย่างเก่าที่ใช้ HttpComponentsMessageSender/org.apache.http ใช้ Apache 4 ไม่ใช่ SimpleHttpComponents5MessageSender และอินเทอร์เฟซ HttpHost นี้

เก็บตัวส่งที่สร้างด้วยมือไว้ตลอดอายุของไคลเอนต์ SOAP และจัดการทำลายตามปกติหลังจากนั้น บีนที่ Spring จัดการสามารถใช้วงจรชีวิตของคอนเทนเนอร์ได้ เทมเพลตอื่นที่เก็บตัวส่งอื่นจะคงการกำหนดค่าการขนส่งของตนเอง

บทความที่เกี่ยวข้อง