با سلام و روز بخیر
در یک 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 تغییر دهم’’
سپاسگزارم