تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ راضیه کارگر
ارسال پارامتر با retrofit
جامعه جاوا (اندروید) ایجاد شده در ۱۸ مرداد ۱۴۰۰

با سلام و روز بخیر

در یک Api برای ارسال نام کاربری و پسورد از header یا body که در فیلم‌های فروشگاه جامع استاد تدریس نمودند استفاده نشده بلکه در postman در بخش params قرار میگیرد. 

آدرس api بدین گونه است

http://localhost:54320/UserAccount/Login?userID=2&password=2

به کمک retrofit میخواهیم این پارامترها را ارسال کنیم. (با Volley پارمترها ارسال و پاسخ دریافت میشود)

آیا این روش صحیح است؟

public interface RetrofitApiService {
    @FormUrlEncoded
    @POST("UserAccount/Login")
    Call<RootUser> getUser(@Field("userID") String userID, @Field("password") String password);
}

و فراخوانی بدین صورت

retrofitApiService.getUser(userName,password).enqueue(new Callback<RootUser>() {
            @Override
            public void onResponse(Call<RootUser> call, Response<RootUser> response) {
                Log.i(TAG, "onResponse: getuser");
                callback.OnSuccess(response.body());
            }
            @Override
            public void onFailure(Call<RootUser> call, Throwable t) {
                Log.i(TAG, "onErorr: getuser" + new Exception(t).toString());
                callback.OnError(new Exception(t));
            }
        });

که username و password را از طریق EditText از کاربر دریافت میکنیم.

 

آیا این روش صحیح هست.

 

در پروژه با خطای ذیل مواجه شدم

onErorr: getuserjava.lang.Exception: java.lang.RuntimeException: Failed to invoke public ir.kargar.kararmad2.Model.RootUser() with no args

بیاد ببینم مشکل از این بخش ارسال پارامتر است یا از بخش تبدیل اتوماتیک respone به کلاس RootUser.

 

با توجه به اینکه تمام آموزش‌های بعدی استاد مثل liveData و غیره بر اساس retrofit است باید کار را از volley به retrofit  تغییر دهم’’

 

سپاسگزارم

 

 

سلام وقت بخیر

برای ارسال query parameters با استفاده از retrofit به جای استفاده از @Field از @Query استفاده کنید

میلاد عزیززاده ۱۸ مرداد ۱۴۰۰، ۱۴:۴۰