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 পুনঃচেষ্টা হ্যান্ডলিং ব্যবহার করুন।

সম্পর্কিত নিবন্ধ