عن المشروع

OkHttp هي مكتبة عميل HTTP لمنصة JVM وAndroid وGraalVM. وفقاً لملف README الخاص بها، صُممت لتكون فعّالة بشكل افتراضي: يدعم HTTP/2 مشاركة المقبس بين الطلبات الموجهة إلى نفس المضيف، ويقلّل تجميع الاتصالات من زمن استجابة الطلبات عندما يكون HTTP/2 غير متاح، ويقلّل الضغط الشفاف GZIP أحجام التنزيلات، ويتجنب التخزين المؤقت للاستجابات الشبكة تماماً للطلبات المتكررة. تُوصف المكتبة بأنها مرنة في مواجهة الشبكات غير الموثوقة. تتعافى بصمت من مشاكل الاتصال الشائعة، وعندما يحتوي الخدمة على عناوين IP متعددة تحاول عناوين بديلة في حال فشل الاتصال الأول، وهو ما يُفيد في دعم IPv4+IPv6 والخدمات الموجودة في مراكز بيانات احتياطية. تدعم ميزات TLS الحديثة بما في ذلك TLS 1.3 وALPN وتقنيةcertificate pinning، ويمكن تكوينها للتراجع عن الإصدارات الأقدم لتوسيع نطاق الاتصال. تستخدم الواجهة البرمجية بناءات fluent مع كائنات طلب واستجابة immutable، وتدعم كلاً من الاستدعاءات المتزامنة الكتلية والاستدعاءات غير المتزامنة مع ردود النomonback. يتضمن ملف README أمثلة قصيرة لتنزيل عنوان URL وإرسال بيانات JSON إلى خادم، ويوجه إلى صفحة الوصفات للحصول على المزيد. يتبع OkHttp مواصفات HTTP الحديثة بما في ذلك RFC 9110 (دلالة HTTP) وRFC 9111 (التخزين المؤقت) وRFC 9112 (HTTP/1.1) وRFC 9113 (HTTP/2) وRFC 6455 (WebSockets) ومواصفة WHATWG لEVENTS server-sent. حيث تكون المواصفات غامضة يتبع سلوك وكلاء المستخدم الحاليين. يشير ملف README إلى أن OkHttp يتجنب عمداً كونها قابلة للتكوين بشكل مفرط خاصة للتغلب على خوادم بها أخطاء أو سيناريوهات غير صالحة، ويسرد أمثلة على القيود مثل عدم السماح بإرسال GET مع جسم الطلب وعدم الكشف عن التخزين المؤقت كواجهة مع تطبيقات بديلة. المتطلبات: Android 5.0+ (مستوى API 21+) وJava 8+. على Android تستخدم AndroidX Startup؛ إذا تم تعطيل المبدأ في manifest فإن التطبيقات يجب أن تستدعي OkHttp.initialize(applicationContext) داخل Application.onCreate. تعتمد على Okio للإدخال/الإخراج عالي الأداء ومكتبة Kotlin القياسية. يوصي ملف README بالحفاظ على OkHttp محدثاً كدفاع ضد المشكلات الأمنية، ويشير إلى أنها تستخدم تنفيذ TLS المدمج في المنصة مع دعم Conscrypt الاختياري على منصات Java عندما يكون Conscrypt هو موفّر الأمان الأول. يدعم فرع 3.12.x التراثي Android 2.3+ وJava 7+، لكن تلك المنصات تفتقر إلى TLS 1.2 ولا ينبغي استخدامها. يتم التوزيع عبر Maven Central، مع قائمة مواد (BOM) لمواءمة الإصدارات وقواعد R8/ProGuard وتكوينات snapshot. يُنشر OkHttp كمشروع Kotlin Multiplatform؛ يجب على مشاريع Maven الاختيار بين okhttp-jvm وokhttp-android لأن مجلد okhttp فارغ في مشاريع Maven. يُنفّذ OkHttp 5.2+ وحدات Java 9، ويسرد ملف README الوحدات العامة المستقرة بما في ذلك okhttp3 وokhttp3.brotli وokhttp3.coroutines وokhttp3.dnsoverhttps وokhttp3.logging وokhttp3.sse وokhttp3.tls وokhttp3.urlconnection وmockwebserver3 والتحويلات JUnit 4/5 الخاصة بها. يتم تضمين MockWebServer لاختبار عملاء HTTP وHTTPS وHTTP/2. يصف ملف README أنه يُستخدم أساساً للاختبارات الداخلية والاختبار الأساسي للتطبيقات التي تستخدم عميل OkHttp وليس مكتبة اختبار HTTP مستقلة متكاملة الميزات، ويلاحظ أنه لا يتم تطويره بنشاط لميزات جديدة؛ قد يتجاوز المستخدمون قدراته وينظرون إلى بدائل مثل MockServer. تم الإبلاغ عن أن تكوينات GraalVM native image تعمل تلقائياً، مع وجود okcurl كوحدة نموذجية. المشروع مرخّص تحت Apache License 2.0، حقوق النشر محفوظة لشركة Square, Inc.