OkHttp لجافا: دليل شامل مع أمثلة عملية

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

OkHttp لجافا: عميل HTTP من الجيل الجديد

1. ما هي OkHttp ولماذا تحتاجها؟

OkHttp هي مكتبة HTTP حديثة وفعالة للغاية للغة جافا وأندرويد، تم تطويرها بواسطة شركة Square. لقد أصبحت المعيار الفعلي لتنفيذ طلبات الشبكة في نظام أندرويد البيئي، وتستخدم بنشاط في تطبيقات جافا من جانب الخادم. توفر OkHttp واجهة برمجة تطبيقات (API) نظيفة وسلسة (Fluent API) لإرسال طلبات HTTP واستقبال الردود، مع دعم جميع الإمكانيات الحديثة للبروتوكول: HTTP/2، WebSockets، ضغط GZIP، التخزين المؤقت للردود، وإعادة الاتصال التلقائي عند حدوث أعطال.

لماذا تحتاج OkHttp بينما يوجد java.net.HttpURLConnection القياسي؟ أولاً، OkHttp أسهل بكثير في الاستخدام — بدلاً من الهياكل المعقدة لإعداد الاتصال، يمكنك ببساطة إنشاء طلب وتنفيذه. ثانياً، تحل المكتبة العديد من المشاكل "مباشرة من الصندوق": فهي تعالج عمليات إعادة التوجيه (الريديركت) تلقائياً، وتدير مجموعة من الاتصالات لإعادة الاستخدام، وتدعم ضغط GZIP الشفاف، وتستطيع تخزين الردود مؤقتاً لتوفير حركة البيانات. ثالثاً، تشكل OkHttp الأساس لمكتبات شهيرة مثل Retrofit وPicasso، مما يجعلها لا غنى عنها لمطوري أندرويد.

تعتبر OkHttp مثالية لأي مشروع جافا يتطلب التفاعل مع REST API، أو تحميل الملفات، أو العمل مع WebSockets، أو مجرد تنفيذ طلبات HTTP. بفضل دعمها لـ HTTP/2، تسمح المكتبة بتعدد الإرسال (Multiplexing) للطلبات عبر اتصال واحد، مما يسرع العمل بشكل كبير مع الخوادم الحديثة. الإصدار 4.x وما فوق تمت إعادة كتابته بالكامل بلغة Kotlin، لكنه يحتفظ بالتوافق العكسي الكامل مع كود جافا، مما يجعله في متناول جميع مطوري جافا.

2. التثبيت

يتم توزيع OkHttp عبر Maven Central. لإضافة المكتبة إلى مشروعك، أضف التبعية (Dependency) إلى ملف build.gradle (لمشاريع Gradle) أو pom.xml (لمشاريع Maven).

Gradle (مشروع أندرويد / جافا)

dependencies {
    implementation 'com.squareup.okhttp3:okhttp:4.12.0'
    // لتسجيل الطلبات (اختياري)
    implementation 'com.squareup.okhttp3:logging-interceptor:4.12.0'
}

Maven

<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.12.0</version>
</dependency>

لوحدات جافا (بدون Gradle/Maven)

قم بتنزيل ملف JAR من Maven Central وأضفه إلى مسار الفئات (classpath) لمشروعك.

ملاحظة مهمة: يتطلب OkHttp 4.x إصدار جافا 8+ أو Android API 21+. للإصدارات الأقدم، استخدم OkHttp 3.x.

3. البداية السريعة — مثال عملي بسيط

أبسط مثال هو تنفيذ طلب GET وعرض نص الرد في وحدة التحكم. قم بإنشاء كلاس Main.java وانسخ الكود التالي:

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        // 1. إنشاء عميل HTTP (عادةً واحد لكل تطبيق)
        OkHttpClient client = new OkHttpClient();

        // 2. بناء الطلب
        Request request = new Request.Builder()
                .url("https://api.github.com/users/octocat")
                .get()
                .build();

        // 3. تنفيذ الطلب بشكل متزامن (يُوقف الخيط الحالي)
        try (Response response = client.newCall(request).execute()) {
            if (response.isSuccessful()) {
                System.out.println("الرد: " + response.body().string());
            } else {
                System.err.println("خطأ: " + response.code());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

يقوم هذا الكود بإجراء طلب GET إلى GitHub

توصيات