OkHttp üzerinde yönlendirme proxy'sini yapılandırın, ardından aynı istemciyi Retrofit'e verin:

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();

Bu parça taşıma katmanını ve Retrofit örneğini oluşturur. build çağrısından önce uygulamanın ihtiyaç duyduğu dönüştürücü ve çağrı bağdaştırıcısı fabrikalarını bu oluşturucuya ekleyin, ardından hizmet arayüzünü bu örnekten oluşturun.

baseUrl'i gerçek API hizmetine yönelik tutun. Oraya proxy URL'sini koyarsanız HTTP hedefini değiştirirsiniz; bu, proxy anlaşmasını yapılandırmaz. Temel URL ayrıca Retrofit'in son eğik çizgi koşulunu korur. Proxy kimlik doğrulaması olmadan izin verilen bir genel API testi, ayrı Proxy nesnesi için HTTP proxy listesinden bir HTTP adresi alabilir.

Açık bir OkHttp proxy'si ProxySelector'ının önüne geçer. İstemcinin sabit bir aracıya sahip olması gerektiğinde bunu kullanın. Hedefe bağlı yönlendirme gerektiren uygulamalar bu politikayı desteklenen seçici üzerinden tasarlamalıdır.

Hizmet arayüzü zaten başka bir Retrofit örneğinden oluşturulduysa, bu yeni örneği oluşturmak eski arayüzün isteklerini taşımaz. Yapılandırılmış istemciyi, Retrofit örneğini ve hizmet nesnesini aynı oluşturma yolunda tutun.

Kimlik doğrulamalı bir proxy için OkHttp, proxyAuthenticator'ı hedef doğrulayıcısından ayrı olarak sunar. Gerektiğinde OkHttp oluşturucusunda yapılandırın, ardından tamamlanmış istemciyi Retrofit'e verin. Basic kimlik doğrulamalı bir proxy için sınırlı proxyAuthenticator yeniden deneme işleme kullanın.

İlgili makaleler