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.

התאימו בין הייבוא ליצירת השולח. דוגמאות ישנות עם HttpComponentsMessageSender/org.apache.http משתמשות ב-Apache 4, ולא ב-SimpleHttpComponents5MessageSender ובממשק HttpHost האלה.

שמרו על שולח שנוצר ידנית לאורך כל חיי לקוח ה-SOAP וסדרו את השמדתו הרגילה לאחר מכן. bean שמנוהל על ידי Spring יכול להשתמש במחזור החיים של המכולה. תבניות אחרות ששומרות על שולחים אחרים שומרות על תצורת התעבורה שלהן.

מאמרים קשורים