এখানে আমি এটি কীভাবে আরএক্স 2 এবং রেট্রোফিট 2 দিয়ে পুট রেস্ট অনুরোধের সাথে ব্যবহার করেছি: আমার অনুরোধটিতে একটি জসন বডি ছিল তবে খালি শরীরের সাথে কেবল এইচটিসিপি প্রতিক্রিয়া কোড ছিল।
এপিআই ক্লায়েন্ট:
public class ApiClient {
public static final String TAG = ApiClient.class.getSimpleName();
private DevicesEndpoint apiEndpointInterface;
public DevicesEndpoint getApiService() {
Gson gson = new GsonBuilder()
.setLenient()
.create();
OkHttpClient.Builder okHttpClientBuilder = new OkHttpClient.Builder();
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
okHttpClientBuilder.addInterceptor(logging);
OkHttpClient okHttpClient = okHttpClientBuilder.build();
apiEndpointInterface = new Retrofit.Builder()
.baseUrl(ApiContract.DEVICES_REST_URL)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create(gson))
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build()
.create(DevicesEndpoint.class);
return apiEndpointInterface;
}
ইন্টারফেস:
public interface DevicesEndpoint {
@Headers("Content-Type: application/json")
@PUT(ApiContract.DEVICES_ENDPOINT)
Observable<ResponseBody> sendDeviceDetails(@Body Device device);
}
তারপরে এটি ব্যবহার করতে:
private void sendDeviceId(Device device){
ApiClient client = new ApiClient();
DevicesEndpoint apiService = client.getApiService();
Observable<ResponseBody> call = apiService.sendDeviceDetails(device);
Log.i(TAG, "sendDeviceId: about to send device ID");
call.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<ResponseBody>() {
@Override
public void onSubscribe(Disposable disposable) {
}
@Override
public void onNext(ResponseBody body) {
Log.i(TAG, "onNext");
}
@Override
public void onError(Throwable t) {
Log.e(TAG, "onError: ", t);
}
@Override
public void onComplete() {
Log.i(TAG, "onCompleted: sent device ID done");
}
});
}
Void
যা কেবলমাত্র ভাল শব্দার্থবিজ্ঞানই নয় তবে খালি ক্ষেত্রে (সামান্য) আরও দক্ষ এবং একটি খালি নয় ক্ষেত্রে (যখন আপনি কেবল দেহের যত্ন নেবেন না) ক্ষেত্রে আরও বেশি দক্ষ।