ดูเว็บไซต์โครงการสำหรับเอกสารประกอบและ API
HTTP เป็นวิธีเครือข่ายแอปพลิเคชันสมัยใหม่ นี่คือวิธีที่เราแลกเปลี่ยนข้อมูลและสื่อ การทำ HTTP อย่างมีประสิทธิภาพจะทำให้ข้อมูลของคุณโหลดเร็วขึ้นและประหยัดแบนด์วิธ
OkHttp เป็นไคลเอ็นต์ HTTP ที่มีประสิทธิภาพตามค่าเริ่มต้น:
OkHttp อดทนเมื่อเครือข่ายมีปัญหา: จะกู้คืนจากปัญหาการเชื่อมต่อทั่วไปโดยไม่แจ้งให้ทราบ หากบริการของคุณมีที่อยู่ IP หลายรายการ OkHttp จะพยายามใช้ที่อยู่อื่นหากการเชื่อมต่อครั้งแรกล้มเหลว นี่เป็นสิ่งจำเป็นสำหรับ IPv4+IPv6 และบริการที่โฮสต์ในศูนย์ข้อมูลที่ซ้ำซ้อน OkHttp รองรับฟีเจอร์ TLS สมัยใหม่ (TLS 1.3, ALPN, การปักหมุดใบรับรอง) สามารถกำหนดค่าให้ถอยกลับเพื่อการเชื่อมต่อในวงกว้างได้
การใช้ OkHttp เป็นเรื่องง่าย API คำขอ/ตอบกลับได้รับการออกแบบโดยผู้สร้างที่คล่องแคล่วและไม่เปลี่ยนรูป รองรับทั้งการโทรบล็อกแบบซิงโครนัสและการโทรแบบอะซิงโครนัสพร้อมการโทรกลับ
OkHttp เป็นไปตามข้อกำหนด HTTP สมัยใหม่ เช่น
ในกรณีที่ข้อมูลจำเพาะไม่ชัดเจน OkHttp จะติดตาม User Agent สมัยใหม่ เช่น เบราว์เซอร์ยอดนิยมหรือไลบรารี 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 Recipes
OkHttp ทำงานบน Android 5.0+ (API ระดับ 21+) และ Java 8+
OkHttp ขึ้นอยู่กับ Okio สำหรับ I/O ประสิทธิภาพสูงและไลบรารีมาตรฐาน 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.