Cấu hình proxy Retrofit qua OkHttpClient
Truyền một OkHttpClient đã cấu hình cho Retrofit trong khi vẫn để URL cơ sở của API hướng tới dịch vụ đích.
Cấu hình proxy chuyển tiếp trên OkHttp, sau đó truyền chính máy khách đó cho 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();
Đoạn này dựng lớp truyền tải và thực thể Retrofit. Trước build, hãy thêm các nhà máy chuyển đổi và bộ điều hợp lời gọi mà ứng dụng cần vào builder này, rồi tạo giao diện dịch vụ từ thực thể này.
Giữ baseUrl hướng tới dịch vụ API thật. Nếu đặt URL proxy ở đó, bạn sẽ đổi đích HTTP; việc đó không cấu hình thương lượng proxy. URL cơ sở cũng giữ yêu cầu dấu gạch chéo cuối của Retrofit. Một thử nghiệm API công khai được phép không có xác thực proxy có thể lấy địa chỉ HTTP từ danh sách proxy HTTP cho đối tượng Proxy riêng.
Proxy OkHttp tường minh được ưu tiên hơn ProxySelector của nó. Dùng cách này khi máy khách cần một trung gian cố định. Ứng dụng cần định tuyến phụ thuộc đích nên thiết kế chính sách đó qua bộ chọn được hỗ trợ.
Nếu giao diện dịch vụ đã được tạo từ một thực thể Retrofit khác, việc dựng thực thể mới này không di chuyển các yêu cầu của giao diện cũ. Giữ máy khách đã cấu hình, thực thể Retrofit và đối tượng dịch vụ trên cùng một đường dựng.
Với proxy có xác thực, OkHttp phơi bày proxyAuthenticator tách biệt khỏi bộ xác thực đích. Cấu hình nó trên builder OkHttp khi cần, rồi truyền máy khách hoàn chỉnh cho Retrofit. Với proxy dùng xác thực Basic, hãy dùng xử lý thử lại proxyAuthenticator có giới hạn.