అనుకూల TCP ప్రోటోకాల్ HTTP ప్రాక్సీ ద్వారా ప్రయాణించగలదు, ఆ ప్రాక్సీ గమ్యానికి CONNECTని అనుమతించినప్పుడు. అప్లికేషన్ ప్రోటోకాల్ HTTP కావాల్సిన అవసరం లేదు: HTTP సొరంగాన్ని ఏర్పాటు చేస్తుంది, తర్వాత అప్లికేషన్ తన స్వంత బైట్లను దాని లోపల మార్పిడి చేసుకుంటుంది.

OpenJDK 25 Socket(Proxy)లో HTTP ప్రాక్సీ మార్గాన్ని అందిస్తుంది. దాని అమలు 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 లక్ష్యం కోసం, ఆ లక్ష్యం పోర్టుకు CONNECT అనుమతిని తనిఖీ చేసిన తర్వాత మాత్రమే HTTP ప్రాక్సీ జాబితా నుండి HTTP అభ్యర్థులను ఎంచుకోండి. ప్రాక్సీ చిరునామా Java మొదట కనెక్ట్ అయ్యే స్థలం; connectకు ఇచ్చే చిరునామా ప్రాక్సీ చేరుకోవాల్సిన సేవను గుర్తిస్తుంది.

పరిష్కరించని గమ్యం ఈ అమలు యొక్క CONNECT అభ్యర్థన కోసం దాని హోస్ట్నామ్ను నిలుపుకుంటుంది. పరిష్కరించిన InetSocketAddress బదులుగా ఆ అభ్యర్థనకు దాని పరిష్కరించిన IP చిరునామాను అందిస్తుంది. ప్రాక్సీ సేవ పేరును పరిష్కరించాల్సి వచ్చినప్పుడు లేదా హోస్ట్నామ్ ఆధారిత విధానాన్ని వర్తింపజేయాల్సి వచ్చినప్పుడు ఈ భేదం ముఖ్యం.

విజయవంతమైన కనెక్షన్ మీకు ఏమి మిగిలిస్తుంది

ఏర్పడిన స్ట్రీమ్లు సొరంగంలోని సేవ డేటాను మోసుకెళ్తాయి. మీ అప్లికేషన్ చదివి పారేయాల్సిన ప్రత్యేక HTTP ప్రతిస్పందనను అవి బయటపెట్టవు. రెండవ CONNECT మార్పిడిని జోడిస్తే, JDK ఇప్పటికే సొరంగాన్ని ఏర్పాటు చేసిన తర్వాత సేవకు HTTP టెక్స్ట్ పంపబడుతుంది.

ఉదాహరణ కనెక్షన్ టైమ్అవుట్ మరియు సాకెట్ చదవడం టైమ్అవుట్ను సెట్ చేస్తుంది; అవి వేర్వేరు నియంత్రణలు, అప్లికేషన్ సెషన్ కోసం ఒకే మొత్తం గడువు కాదు.

CONNECT అనుమతి ఇప్పటికీ ప్రాక్సీదే. సాధారణ వెబ్ అభ్యర్థనలను పంపే ముగింపు బిందువు సేవ పోర్టును తిరస్కరించవచ్చు లేదా సొరంగం తెరవడానికి ముందు ప్రామాణీకరణ కోరవచ్చు. ఆ వైఫల్యాలను సొరంగాన్ని అంగీకరించి తర్వాత మీ అప్లికేషన్ ప్రోటోకాల్ను తిరస్కరించే సర్వర్ నుండి వేరుగా ఉంచండి.

ఆ ప్రోటోకాల్కు TLS అవసరమైతే, కనెక్ట్ అయిన సాకెట్ ద్వారా సేవ యొక్క ఉద్దేశించిన హోస్ట్నామ్ మరియు సాధారణ సర్టిఫికెట్ తనిఖీలతో TLS సంప్రదింపులు చేయండి. CONNECT మాత్రమే స్ట్రీమ్ను గుప్తీకరించదు. నిజమైన HTTP API కోసం, HTTP సందేశాలను కూడా నిర్వహిస్తుంది కాబట్టి HTTP క్లయింటే మరింత సౌకర్యవంతమైన ఇంటర్ఫేస్గా ఉంటుంది.

సంబంధిత వ్యాసాలు