जावा के लिए HTTP-क्लाइंट: HTTP अनुरोधों के लिए शीर्ष लाइब्रेरीज़

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

जावा के लिए HTTP-क्लाइंट: HTTP अनुरोधों के लिए शीर्ष लाइब्रेरीज़

\n\n

आधुनिक जावा विकास HTTP के माध्यम से बाहरी सेवाओं के साथ बातचीत के बिना अकल्पनीय है। चाहे वह REST API हो, वेबहुक हो या फ़ाइल अपलोड हो - एक गुणवत्तापूर्ण HTTP-क्लाइंट किसी भी नेटवर्क एप्लिकेशन की नींव है। इस लेख में, हम जावा के लिए चार सर्वश्रेष्ठ लाइब्रेरीज़ पर चर्चा करेंगे: क्लासिक Apache HttpClient से लेकर आधुनिक Retrofit तक। आप उनकी ताकत, विशिष्ट उपयोग के परिदृश्य जानेंगे और कोड उदाहरण देखेंगे।

\n\n

1. Apache HttpClient (Apache HttpComponents)

\n\n

यह शायद जावा में HTTP के लिए सबसे प्रसिद्ध और परिपक्व लाइब्रेरी है। यह 2004 से विकसित हो रही है, HTTP/1.1 और HTTP/2, कनेक्शन पूल का लचीला कॉन्फ़िगरेशन, प्रॉक्सी, प्रमाणीकरण और अनुरोध इंटरसेप्टर का समर्थन करती है। यह उच्च अनुकूलन आवश्यकताओं वाले सर्वर एप्लिकेशन के लिए आदर्श है।

\n\n

GET अनुरोध का उदाहरण:

\n
import org.apache.hc.client5.http.classic.methods.HttpGet;\nimport org.apache.hc.client5.http.impl.classic.CloseableHttpClient;\nimport org.apache.hc.client5.http.impl.classic.HttpClients;\n\ntry (CloseableHttpClient client = HttpClients.createDefault()) {\n    HttpGet request = new HttpGet("https://api.example.com/data");\n    String response = client.execute(request, classicHttpResponse -> {\n        return new String(classicHttpResponse.getEntity().getContent().readAllBytes());\n    });\n    System.out.println(response);\n}
\n\n

मुख्य विशेषताएं:

\n
    \n
  • HTTP/1.1 और HTTP/2 का पूर्ण समर्थन
  • \n
  • कनेक्शन पूल और टाइमआउट का लचीला प्रबंधन
  • \n
  • प्रॉक्सी सर्वर और SSL/TLS के लिए अंतर्निहित समर्थन
  • \n
  • प्लगइन्स और इंटरसेप्टर का व्यापक पारिस्थितिकी तंत्र
  • \n
  • जावा 8+ के साथ संगतता
  • \n
\n\n

2. OkHttp

\n\n

Square की आधुनिक लाइब्रेरी, Android और Java 8+ के लिए अनुकूलित। यह एसिंक्रोनस I/O और अंतर्निहित HTTP/2 मल्टीप्लेक्सिंग के कारण उच्च प्रदर्शन द्वारा प्रतिष्ठित है। OkHttp स्वचालित रूप से पुनः प्रयास, कैशिंग और डेटा संपीड़न का प्रबंधन करता है। इसका उपयोग अक्सर Retrofit के साथ किया जाता है।

\n\n

एसिंक्रोनस अनुरोध:

\n
import okhttp3.OkHttpClient;\nimport okhttp3.Request;\nimport okhttp3.Response;\n\nOkHttpClient client = new OkHttpClient.Builder()\n        .connectTimeout(10, java.util.concurrent.TimeUnit.SECONDS)\n        .build();\n\nRequest request = new Request.Builder()\n        .url("https://api.example.com/data")\n        .build();\n\nclient.newCall(request).enqueue(new okhttp3.Callback() {\n    @Override\n    public void onFailure(okhttp3.Call call, IOException e) {\n        System.err.println("त्रुटि: " + e.getMessage());\n    }\n\n    @Override\n    public void onResponse(okhttp3.Call call, Response response) throws IOException {\n        if (response.isSuccessful()) {\n            System.out.println(response.body().string());\n        }\n    }\n});
\n\n

लाभ:

\n
    \n
  • HTTP/2 और SPDY का स्वचालित समर्थन
  • \n
  • अंतर्निहित कैशिंग और संपीड़न (gzip)
  • \n
  • थ्रेड को ब्लॉक किए बिना एसिंक्रोनस कॉल
  • \n
  • न्यूनतम JAR आकार (~600 KB)
  • \n
  • Android और Kotlin के साथ एकीकरण
  • \n
\n\n

3. Java 11 HttpClient (मानक)

\n\n

Java 11 से शुरू करके, JDK की मानक लाइब्रेरी में एक आधुनिक HTTP-क्लाइंट जोड़ा गया था। यह HTTP/2, WebSocket, रिएक्टिव डेटा स्ट्रीम और सिंक्रोनस/एसिंक्रोनस अनुरोधों का समर्थन करता है। यह उन परियोजनाओं के लिए आदर्श समाधान है जहां आप तृतीय-पक्ष निर्भरताएं शामिल नहीं करना चाहते हैं।

\n\n

त्रुटि प्रबंधन के साथ सिंक्रोनस GET:

\n
import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n        .uri(URI.create("https://api.example.com/data"))\n        .GET()\n        .build();\n\ntry {\n    HttpResponse<St                    

अनुशंसाएँ