ה-proxy קיבל TCP אך מעולם לא השלים את תגובת CONNECT. תגובת האתר טרם החלה; פסק זמן שמכוון רק לתגובה מאוחרת זו עלול להשאיר את ההקמה הזו ממתינה ללא גבול.

עבור Apache HttpClient 5.3.1, הגדירו את ברירות המחדל של מנהל החיבורים:

var connection = ConnectionConfig.custom()
    .setConnectTimeout(Timeout.ofSeconds(5))
    .setSocketTimeout(Timeout.ofSeconds(10))
    .build();

var manager = PoolingHttpClientConnectionManagerBuilder.create()
    .setDefaultConnectionConfig(connection)
    .build();

var client = HttpClients.custom()
    .setConnectionManager(manager)
    .setProxy(new HttpHost("http", "proxy.example", 8080))
    .build();

השתמשו במחלקות של Apache HttpComponents 5 תחת org.apache.hc, עם Timeout בחבילת העזר core5. שמרו את הלקוח לעבודתו וסגרו אותו. לבדיקת HTTP ציבורית מבודדת, מועמד מתוך רשימת ה-proxy של HTTP מספק את נקודת הקצה; שמרו על היעד קבוע בעת השוואת פסקי זמן.

מגבלהההמתנה המטופלת
פסק זמן חיבורהקמת החיבור
פסק זמן socketחוסר פעילות I/O כברירת מחדל, כולל חילופי CONNECT
השגה מהמאגר / תגובת היישוםשלבים אחרים המוגדרים בנפרד

לאחר CONNECT, ייתכן ש-TLS יזדקק למגבלת הקמה משלו דרך תצורת ה-TLS של HttpClient 5. הבחינו גם בין חוסר פעילות לבין מועד אחרון כולל: בייטים לסירוגין או חילופי אימות חוזרים עלולים להאריך את הזמן הכולל. השתמשו במדיניות מועד אחרון או ביטול הנתמכת על ידי היישום עבור תקציב אחד לכל הפעולה.

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