Introduction to Java HttpClient

كتير مننا بيحتاج في شغله انه يتعامل مع الـ HTTP requests زي GET و POST علشان يتواصلوا مع Servers أو APIs مختلفة. واحدة من الطرق اللي ممكن نستخدمها في الـ Java هي استخدام الـ HttpClient اللي بيسهل علينا العملية دي بشكل كبير.
Introduction to Java HttpClient
Introduction to Java HttpClient

في هذه الصفحة

المقدمة

كتير مننا بيحتاج في شغله انه يتعامل مع الـ HTTP requests زي GET و POST علشان يتواصلوا مع Servers أو APIs مختلفة. واحدة من الطرق اللي ممكن نستخدمها في الـ Java هي استخدام الـ HttpClient اللي بيسهل علينا العملية دي بشكل كبير.

والـ HttpClient انضافت للـ Java 11 وبتدعم كلا من:

  • الـ HTTP1.1 / HTTP2
  • الـ Synchronous / Asynchronous Programming

ومن مميزاتها طبعًا انها بتسهل عملية التعامل معاها من خلال الـ Builder Design Pattern وهنلاقي ان الـ Classes كلها في الـ Module java.net.http.


HttpClient Synchronous GET Request

خلونا نتخيل ان مطلوب مننا اننا نبعت GET Request لـ Endpoint ونجيب منها بعض الـ Data اللي محتاجينها فعشان نعمل ده باستعمال الـ HttpClient الكود هيكون كالآتي :

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class HttpClientExample {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(new URI("https://jsonplaceholder.typicode.com/posts/1"))
                .GET()
                .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}

HttpClient Asynchronous GET Request

طب لو كان مطلوب مننا اننا نعمل نفس اللي عملناه ولكن من خلال استعمال الـ Asynchronous Programming وقتها الكود هيبقى شكله عامل ازاي ؟

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class HttpClientExample {
    public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("https://jsonplaceholder.typicode.com/posts/1"))
                .GET()
                .build();
        client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
                .thenApply(HttpResponse::body)
                .thenAccept(System.out::println)
                .join();
    }
}

تقدروا دلوقتي تشتركوا في النشرة الأسبوعية لاقرأ-تِك بشكل مجاني تمامًا عشان يجيلكوا كل جديد بشكل أسبوعي فيما يخص مواضيع متنوعة وبشروحات بسيطة وسهلة وبجودة عالية 🚀

النشرة هيكون ليها شكل جديد ومختلف عن شكلها القديم وهنحاول انها تكون مميزة ومختلفة وخليط بين المحتوى الأساسي اللي بينزل ومفاجآت تانية كتير 🎉

Eqraatech Newsletter | Eqraatech - اقرأ-تِك | Substack
محتوى تقني متميز في مختلف مجالات هندسة البرمجيات باللغة العربية عن طريق تبسيط المفاهيم البرمجية المعقدة بشكل سلس وباستخدام صور توضيحية مذهلة. Click to read Eqraatech Newsletter, a Substack publication with hundreds of subscribers.

HttpClient

فزي ماحنا شوفنا في المثالين اللي فاتو , عشان نبعت Request محتاجين في الأول يكون عندنا HttpClient من خلال الـ Builder بتاعه , والـ Builder ميزته انه Configurable لكل Client.

طب ايه شكل الـ Configuration اللي بيتيحهالنا ؟

هذا المقال مخصص للأعضاء المنتسبين لخطط الاشتراك المدفوعة فقط

اشترك الآن بنشرة اقرأ-تِك الأسبوعية

لا تدع أي شيء يفوتك. واحصل على أحدث المقالات المميزة مباشرة إلى بريدك الإلكتروني وبشكل مجاني!