Ο διακομιστής μεσολάβησης δέχτηκε το 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, ένας υποψήφιος από τη λίστα διακομιστών μεσολάβησης HTTP παρέχει το τελικό σημείο· κρατήστε τον προορισμό σταθερό όταν συγκρίνετε χρονικά όρια.

ΌριοΑναμονή που καλύπτεται
Χρονικό όριο σύνδεσηςΕγκατάσταση σύνδεσης
Χρονικό όριο socketΠροεπιλεγμένη αδράνεια I/O, συμπεριλαμβανομένης της ανταλλαγής CONNECT
Απόκτηση από τη δεξαμενή / απάντηση εφαρμογήςΆλλα στάδια που ρυθμίζονται ξεχωριστά

Μετά το CONNECT, το TLS μπορεί να χρειάζεται το δικό του όριο ρύθμισης μέσω της διαμόρφωσης TLS του HttpClient 5. Διακρίνετε επίσης την αδράνεια από μια συνολική προθεσμία: διακοπτόμενα byte ή επαναλαμβανόμενες ανταλλαγές ελέγχου ταυτότητας μπορούν να παρατείνουν τον συνολικό χρόνο. Χρησιμοποιήστε την υποστηριζόμενη πολιτική προθεσμίας ή ακύρωσης της εφαρμογής για έναν προϋπολογισμό για ολόκληρη τη λειτουργία.

Σχετικά άρθρα