في هذه الصفحة
المقدمة
كتير مننا بيحتاج في شغله انه يتعامل مع الـ 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();
}
}
تقدروا دلوقتي تشتركوا في النشرة الأسبوعية لاقرأ-تِك بشكل مجاني تمامًا عشان يجيلكوا كل جديد بشكل أسبوعي فيما يخص مواضيع متنوعة وبشروحات بسيطة وسهلة وبجودة عالية 🚀
النشرة هيكون ليها شكل جديد ومختلف عن شكلها القديم وهنحاول انها تكون مميزة ومختلفة وخليط بين المحتوى الأساسي اللي بينزل ومفاجآت تانية كتير 🎉
HttpClient
فزي ماحنا شوفنا في المثالين اللي فاتو , عشان نبعت Request محتاجين في الأول يكون عندنا HttpClient
من خلال الـ Builder بتاعه , والـ Builder ميزته انه Configurable لكل Client.
طب ايه شكل الـ Configuration اللي بيتيحهالنا ؟