راجع موقع المشروع للحصول على الوثائق وواجهات برمجة التطبيقات.
HTTP هو طريقة شبكة التطبيقات الحديثة. إنها الطريقة التي نتبادل بها البيانات والوسائط. يؤدي استخدام HTTP بكفاءة إلى تحميل العناصر الخاصة بك بشكل أسرع وتوفير النطاق الترددي.
OkHttp هو عميل HTTP فعال بشكل افتراضي:
يستمر OkHttp عندما تكون الشبكة مزعجة: وسوف يتعافى بصمت من مشاكل الاتصال الشائعة. إذا كانت خدمتك تحتوي على عناوين IP متعددة، فسيحاول OkHttp استخدام عناوين بديلة في حالة فشل الاتصال الأول. يعد ذلك ضروريًا لـ IPv4+IPv6 والخدمات المستضافة في مراكز البيانات الزائدة عن الحاجة. يدعم OkHttp ميزات TLS الحديثة (TLS 1.3، ALPN، تثبيت الشهادة). يمكن تهيئته ليعود للاتصال واسع النطاق.
يعد استخدام OkHttp أمرًا سهلاً. تم تصميم واجهة برمجة تطبيقات الطلب/الاستجابة الخاصة بها بمنشئين يجيدون وثباتهم. وهو يدعم كلاً من مكالمات الحظر المتزامنة والمكالمات غير المتزامنة مع عمليات الاسترجاعات.
يتبع OkHttp مواصفات HTTP الحديثة مثل
عندما تكون المواصفات غامضة، يتبع OkHttp وكلاء المستخدم الحديثين مثل المتصفحات الشائعة أو مكتبات HTTP الشائعة.
OkHttp مبدئي ويتجنب الإفراط في التكوين، خاصة عندما يكون هذا التكوين هو الحل البديل لخادم به أخطاء، أو اختبار سيناريوهات غير صالحة أو تتعارض مع RFC ذي الصلة. توجد مكتبات HTTP أخرى تملأ هذه الفجوة مما يسمح بالتخصيص الشامل بما في ذلك الطلبات التي قد تكون غير صالحة.
قيود المثال
يقوم هذا البرنامج بتنزيل عنوان URL وطباعة محتوياته كسلسلة. المصدر الكامل.
OkHttpClient client = new OkHttpClient ();
String run ( String url ) throws IOException {
Request request = new Request . Builder ()
. url ( url )
. build ();
try ( Response response = client . newCall ( request ). execute ()) {
return response . body (). string ();
}
}
يقوم هذا البرنامج بنشر البيانات إلى الخدمة. المصدر الكامل.
public static final MediaType JSON = MediaType . get ( "application/json" );
OkHttpClient client = new OkHttpClient ();
String post ( String url , String json ) throws IOException {
RequestBody body = RequestBody . create ( json , JSON );
Request request = new Request . Builder ()
. url ( url )
. post ( body )
. build ();
try ( Response response = client . newCall ( request ). execute ()) {
return response . body (). string ();
}
}
توجد أمثلة أخرى على صفحة وصفات OkHttp.
يعمل OkHttp على Android 5.0+ (مستوى API 21+) وJava 8+.
يعتمد OkHttp على Okio للإدخال/الإخراج عالي الأداء ومكتبة Kotlin القياسية. كلاهما مكتبات صغيرة تتمتع بتوافق قوي مع الإصدارات السابقة.
نوصي بشدة بالحفاظ على تحديث OkHttp. كما هو الحال مع متصفحات الويب التي يتم تحديثها تلقائيًا، يعد البقاء على اطلاع دائم بعملاء HTTPS بمثابة دفاع مهم ضد المشكلات الأمنية المحتملة. نحن نتتبع النظام البيئي الديناميكي لـ TLS ونقوم بضبط OkHttp لتحسين الاتصال والأمان.
يستخدم OkHttp تطبيق TLS المدمج في نظامك الأساسي. على منصات Java، يدعم OkHttp أيضًا Conscrypt، الذي يدمج BoringSSL مع Java. سوف يستخدم OkHttp Conscrypt إذا كان هو موفر الأمان الأول:
Security . insertProviderAt ( Conscrypt . newProvider (), 1 );
يدعم فرع OkHttp 3.12.x
Android 2.3+ (مستوى API 9+) وJava 7+. تفتقر هذه الأنظمة الأساسية إلى دعم TLS 1.2 ويجب عدم استخدامها.
يحتوي سجل التغيير الخاص بنا على تاريخ الإصدار.
الإصدار الأخير متاح على Maven Central.
implementation( " com.squareup.okhttp3:okhttp:4.12.0 " )
تتوفر بنيات لقطة. تتوفر قواعد R8 وProGuard.
لدينا أيضًا قائمة مواد (BOM) متاحة لمساعدتك في تحديث عناصر OkHttp والتأكد من توافق الإصدار.
dependencies {
// define a BOM and its version
implementation(platform( " com.squareup.okhttp3:okhttp-bom:4.12.0 " ))
// define any required OkHttp artifacts without version
implementation( " com.squareup.okhttp3:okhttp " )
implementation( " com.squareup.okhttp3:logging-interceptor " )
}
يتضمن OkHttp مكتبة لاختبار عملاء HTTP، وHTTPS، وHTTP/2.
الإصدار الأخير متاح على Maven Central.
testImplementation( " com.squareup.okhttp3:mockwebserver:4.12.0 " )
يتم استخدام MockWebServer أولاً للاختبار الداخلي، وللاختبار الأساسي للتطبيقات باستخدام عميل OkHttp. إنها ليست مكتبة اختبار HTTP كاملة الميزات تم تطويرها بشكل مستقل. لا يتم تطويره بنشاط للحصول على ميزات جديدة. على هذا النحو، قد تجد أن احتياجاتك تتفوق على MockWebServer ويمكنك استخدام مكتبة اختبار أكثر اكتمالاً مثل MockServer.
يجب أن يعمل إنشاء صورك الأصلية باستخدام Graal https://www.graalvm.org/ تلقائيًا. هذا ليس حاليًا في الإصدار النهائي، لذا يجب استخدام 5.0.0-alpha.2
. يرجى الإبلاغ عن أي أخطاء أو حلول تجدها.
راجع وحدة okcurl للحصول على مثال للبناء.
$ ./gradlew okcurl:nativeImage
$ ./okcurl/build/graal/okcurl https://httpbin.org/get
Copyright 2019 Square, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.