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을 넣으면 HTTP 목적지가 바뀔 뿐 프록시 협상이 구성되지는 않습니다. 기본 URL은 Retrofit의 끝 슬래시 요구 사항도 유지합니다. 프록시 인증 없이 허용된 공개 API 테스트는 별도의 Proxy 객체를 위해 HTTP 프록시 목록에서 HTTP 주소를 가져올 수 있습니다.

명시적인 OkHttp 프록시는 ProxySelector보다 우선합니다. 클라이언트에 고정 중간 경로가 있어야 할 때 사용하십시오. 대상에 따라 라우팅해야 하는 애플리케이션은 지원되는 선택기를 통해 그 정책을 설계하는 편이 좋습니다.

서비스 인터페이스가 이미 다른 Retrofit 인스턴스에서 만들어졌다면 이 새 인스턴스를 만들어도 이전 인터페이스의 요청은 옮겨지지 않습니다. 구성된 클라이언트, Retrofit 인스턴스, 서비스 객체를 같은 구성 경로에 두십시오.

인증이 필요한 프록시의 경우 OkHttp는 proxyAuthenticator를 대상 인증자와 별도로 노출합니다. 필요할 때 OkHttp 빌더에서 구성한 다음 완성된 클라이언트를 Retrofit에 넘깁니다. Basic 인증 프록시에는 제한된 proxyAuthenticator 재시도 처리를 사용하십시오.

관련 글