OkHttpClient ਰਾਹੀਂ Retrofit ਪ੍ਰਾਕਸੀ ਕੌਨਫਿਗਰ ਕਰੋ
Retrofit ਨੂੰ ਕੌਨਫਿਗਰ ਕੀਤਾ OkHttpClient ਦਿਓ ਅਤੇ API ਦਾ ਬੇਸ URL ਟਾਰਗਟ ਸੇਵਾ ਵੱਲ ਹੀ ਇਸ਼ਾਰਾ ਕਰਦਾ ਰੱਖੋ।
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 ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਸੰਭਾਲ ਵਰਤੋ।