منصوبے کے بارے میں
اوکایف جے وی ایم، اینڈرائیڈ اور گراول وی ایم کے لیے ایک ایفیشنٹ ایچ ٹی ٹی پی کلائنٹ لائبریری ہے۔ اس کی README کے مطابق، یہ ڈیزائن کردہ ہے بطور ڈیفالٹ ایفیشنٹ: HTTP/2 سپورٹ ایک ہی host کے لیے requests کو ایک socket شیئر کرنے دیتی ہے، connection pooling HTTP/2 دستیاب نہ ہونے کی صورت میں request latency کو کم کرتا ہے، شفاف GZIP ڈاؤنلوڈ سائز کو سکڑتا ہے، اور response caching دہرائے گئے requests کے لیے network سے بچاتا ہے۔
لائبریری کو unreliable networks پر resilient بتایا گیا ہے۔ یہ common connection problems سے خاموشی سے recovery کرتی ہے، اور جب ایک service کے multiple IP addresses ہوں تو پہلے connect کرنے میں failure کی صورت میں alternate addresses try کرتی ہے، جسے README IPv4+IPv6 اور redundant data centers میں services کے لیے مفید بتاتی ہے۔ یہ modern TLS features شامل TLS 1.3, ALPN اور certificate pinning کو سپورٹ کرتی ہے، اور broad connectivity کے لیے fallback پر configure کی جا سکتی ہے۔
API fluent builders اور immutable request/response objects استعمال کرتی ہے، اور synchronous blocking calls اور asynchronous calls with callbacks دونوں کو سپورٹ کرتی ہے۔ README میں URL download کرنے اور server پر JSON post کرنے کے مختصر examples شامل ہیں، اور مزید کے لیے recipes page کی طرف اشارہ کرتی ہے۔
اوکایف modern HTTP specifications کی پیروی کرتی ہے، جن میں RFC 9110 (HTTP semantics), RFC 9111 (caching), RFC 9112 (HTTP/1.1), RFC 9113 (HTTP/2), RFC 6455 (WebSockets) اور WHATWG server-sent events specification شامل ہیں۔ جہاں specs ambiguous ہوتے ہیں وہاں یہ modern user agents کے behavior کی پیروی کرتی ہے۔ README کہتی ہے کہ اوکایف deliberately overly configurable ہونے سے بچتی ہے، خاص طور پر buggy servers یا invalid scenarios کو workaround کرنے کے لیے، اور example limitations بتاتی ہے جیسے GET with body کی اجازت نہ دینا اور cache کو interface کے طور پر expose نہ کرنا تاکہ alternative implementations ممکن نہ ہوں۔
Requirements: Android 5.0+ (API level 21+) اور Java 8+. Android پر یہ AndroidX Startup استعمال کرتی ہے; اگر initializer manifest میں disable ہو تو apps کو Application.onCreate میں OkHttp.initialize(applicationContext) call کرنا ہوتا ہے۔ یہ Okio پر depend کرتی ہے high-performance I/O کے لیے اور Kotlin standard library کے لیے بھی۔ README recommend کرتی ہے کہ اوکایف کو up to date رکھا جائے بطور security problems کے خلاف دفاع، اور نوٹ کرتی ہے کہ یہ platform کی built-in TLS implementation استعمال کرتی ہے، optional Conscrypt support Java platforms پر جب Conscrypt پہلا security provider ہو۔ ایک legacy 3.12.x branch Android 2.3+ اور Java 7+ کو support کرتی ہے، لیکن ان platforms پر TLS 1.2 نہیں ہوتا اور انہیں استعمال نہیں کرنا چاہیے۔
Distribution Maven Central کے ذریعے ہوتی ہے، version alignment کے لیے bill of materials (BOM)، R8/ProGuard rules، اور snapshot builds کے ساتھ۔ اوکایف ایک Kotlin Multiplatform project کے طور پر publish ہوتی ہے؛ Maven projects کو okhttp-jvm اور okhttp-android کے درمیان choose کرنا ہوتا ہے کیونکہ Maven projects میں okhttp artifact خالی ہوتا ہے۔ اوکایف 5.2+ Java 9 modules implement کرتی ہے، اور README stable public modules list کرتی ہے، جن میں okhttp3, okhttp3.brotli, okhttp3.coroutines, okhttp3.dnsoverhttps, okhttp3.logging, okhttp3.sse, okhttp3.tls, okhttp3.urlconnection, mockwebserver3 اور اس کے JUnit 4/5 variants شامل ہیں۔
MockWebServer HTTP, HTTPS اور HTTP/2 clients کے testing کے لیے included ہے۔ README اسے بنیادی طور پر internal testing اور اوکایف کلینٹ استعمال کرنے والے apps کے basic testing کے لیے استعمال ہونے والی بتاتی ہے، نہ کہ full-featured standalone HTTP testing library کے طور پر، اور نوٹ کرتی ہے کہ یہ نئے features کے لیے actively develop نہیں ہو رہی؛ users اس سے outgrow ہو سکتے ہیں اور MockServer جیسے alternatives consider کر سکتے ہیں۔ GraalVM native image builds automatically کام کرتی ہیں، okcurl module ایک example کے طور پر۔ project Apache License 2.0 کے تحت licensed ہے، copyright Square, Inc.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.