אַ באַזונדער TCP פּראָטאָקאָל קען פֿאָרן דורך אַ HTTP פּראָקסי ווען יענער פּראָקסי דערלויבט CONNECT צום ציל. דער אַפּליקאַציע פּראָטאָקאָל דאַרף נישט ווערן HTTP: HTTP שטעלט אויף דעם טונעל, דערנאָך טוישט די אַפּליקאַציע אירע אייגענע בייטן אין אים.

OpenJDK 25 שטעלט צו אַ וועג דורך HTTP פּראָקסי אין Socket(Proxy). זײַן אימפּלעמענטאַציע פֿירט אויס דעם CONNECT אויסטויש און גיט צוריק אַ פֿאַרבונדענעם סאָקעט פֿאַר דער אַפּליקאַציע צו ניצן.

Proxy route = new Proxy(
    Proxy.Type.HTTP,
    new InetSocketAddress("proxy.example", 8080));

try (Socket socket = new Socket(route)) {
    socket.setSoTimeout(10000);
    socket.connect(
        InetSocketAddress.createUnresolved("tcp-service.example", 8443),
        5000);
    InputStream input = socket.getInputStream();
    OutputStream output = socket.getOutputStream();
}

דער פֿראַגמענט ניצט קלאַסן פֿון java.net און java.io. פֿאַרבייט ביידע ענדפּונקטן און פֿירט אויס דעם פּראָטאָקאָל אויסטויש איידער איר פֿאַרלאָזט דעם try בלאָק. פֿאַר אַ דערלויבט פּובליק TCP ציל, קלײַבט HTTP קאַנדידאַטן פֿון דער HTTP פּראָקסי ליסטע ערשט נאָך פּרובירן די CONNECT דערלויבעניש פֿאַר דעם ציל־פּאָרט. די פּראָקסי אַדרעס איז דאָרט וווּ Java פֿאַרבינדט זיך ערשט; די אַדרעס וואָס ווערט איבערגעגעבן צו connect באַשטימט דעם דינסט וואָס דער פּראָקסי דאַרף דערגרייכן.

דער אומפֿאַרענדערטער ציל האַלט זײַן האָסטנאָמען פֿאַר דער CONNECT בקשה פֿון דער אימפּלעמענטאַציע. אַ פֿאַרענדערטער InetSocketAddress גיט אָבער יענער בקשה זײַן פֿאַרענדערטע IP אַדרעס. דער חילוק איז וויכטיק ווען דער פּראָקסי מוז דעם דינסט נאָמען פֿאַרענדערן אָדער אָנווענדן אַ פּאָליטיק באַזירט אויף האָסטנאָמען.

וואָס אַ געראָטענע פֿאַרבינדונג לאָזט אײַך

די סטרימען וואָס קומען אַרויס טראָגן די דאַטן פֿון דעם דינסט אין טונעל. זיי דעקן נישט אויף אַ באַזונדער HTTP ענטפֿער וואָס אײַער אַפּליקאַציע דאַרף לייענען און אַוועקוואַרפֿן. צולייגן אַ צווייטן CONNECT אויסטויש וואָלט געשיקט HTTP טעקסט צום דינסט נאָך דעם וואָס דער JDK האָט שוין אויפֿגעשטעלט דעם טונעל.

דער ביישפּיל שטעלט אַ פֿאַרבינדונג־צײַטגרענץ און אַ סאָקעט־לייען־צײַטגרענץ; דאָס זײַנען באַזונדערע קאָנטראָלן, נישט איין אַלגעמיינער טערמין פֿאַר דער אַפּליקאַציע סעסיע.

די CONNECT דערלויבעניש געהערט נאָך אַלץ דעם פּראָקסי. אַן ענדפּונקט וואָס ווײַטערט איבער געוויינטלעכע וועב־בקשות קען אָפּזאָגן דעם דינסט־פּאָרט אָדער פֿאָדערן אויטענטיפֿיקאַציע איידער ער עפֿנט אַ טונעל. האַלט די דורכפֿאַלן באַזונדער פֿון אַ סערווער וואָס נעמט אָן דעם טונעל אָבער שפּעטער אָפּזאָגט אײַער אַפּליקאַציע פּראָטאָקאָל.

אויב יענער פּראָטאָקאָל דאַרף TLS, פֿאַרהאַנדלט TLS דורך דעם פֿאַרבונדענעם סאָקעט מיט דעם געמיינטן האָסטנאָמען פֿון דעם דינסט און געוויינטלעכע סערטיפֿיקאַט פּרובירן. CONNECT אַליין פֿאַרשליסלט נישט די סטרימע. פֿאַר אַן עכט HTTP API בלײַבט אַ HTTP קליענט דער באַקוועמער צווישנשטעל ווײַל ער באַהאַנדלט אויך HTTP מעלדונגען.

פֿאַרבונדענע אַרטיקלען