กำหนดค่า proxy ส่งต่อบน OkHttp แล้วส่งไคลเอนต์เดียวกันให้ Retrofit:

import java.net.InetSocketAddress;
import java.net.Proxy;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;

Proxy proxy = new Proxy(
    Proxy.Type.HTTP,
    new InetSocketAddress("proxy.example", 8080));

OkHttpClient http = new OkHttpClient.Builder()
    .proxy(proxy)
    .build();

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://api.example/")
    .client(http)
    .build();

ส่วนนี้สร้างชั้นการขนส่งและอินสแตนซ์ Retrofit ก่อน build ให้เพิ่มโรงงานคอนเวอร์เตอร์และคอลล์อะแดปเตอร์ที่แอปพลิเคชันต้องใช้ลงในบิลเดอร์นี้ จากนั้นสร้างอินเทอร์เฟซบริการจากอินสแตนซ์นี้

ให้ baseUrl ชี้ไปที่บริการ API จริง หากใส่ URL ของ proxy ตรงนั้นจะเปลี่ยนปลายทาง HTTP ซึ่งไม่ได้กำหนดค่าการเจรจากับ proxy URL ฐานยังคงรักษาข้อกำหนดเครื่องหมายทับปิดท้ายของ Retrofit การทดสอบ API สาธารณะที่ได้รับอนุญาตโดยไม่มีการพิสูจน์ตัวตน proxy สามารถนำที่อยู่ HTTP จากรายการพร็อกซี HTTPมาใช้กับออบเจ็กต์ Proxy แยกต่างหากได้

proxy ที่ระบุชัดเจนใน OkHttp มีลำดับความสำคัญเหนือ ProxySelector ของมัน ใช้วิธีนี้เมื่อไคลเอนต์ควรมีตัวกลางคงที่ แอปพลิเคชันที่ต้องการกำหนดเส้นทางตามปลายทางควรออกแบบนโยบายนั้นผ่านตัวเลือกที่รองรับแทน

หากอินเทอร์เฟซบริการถูกสร้างจากอินสแตนซ์ Retrofit อื่นแล้ว การสร้างอินสแตนซ์ใหม่นี้ไม่ย้ายคำขอของอินเทอร์เฟซเก่า ให้เก็บไคลเอนต์ที่กำหนดค่าแล้ว อินสแตนซ์ Retrofit และออบเจ็กต์บริการไว้บนเส้นทางการสร้างเดียวกัน

สำหรับ proxy ที่มีการพิสูจน์ตัวตน OkHttp เปิดเผย proxyAuthenticator แยกจากตัวพิสูจน์ตัวตนปลายทาง กำหนดค่าบนบิลเดอร์ OkHttp เมื่อจำเป็น แล้วส่งไคลเอนต์ที่สมบูรณ์ให้ Retrofit สำหรับ proxy ที่ใช้การพิสูจน์ตัวตน Basic ให้ใช้การจัดการการลองใหม่ของ proxyAuthenticator แบบจำกัด

บทความที่เกี่ยวข้อง