Retrofit android response.body null
Поставил цель получить данные с сайта с помощью retrofit. А именно получить курсы валют с сайта http://www.nbrb.by/API/ExRates/Currencies Однако данные не получаю и в логе не показывает что получено. Я уже просмотрел кучу tutorial, все они показывают как получить данные, что на самом деле все просто при получении данных. Через приложение postman показывает что данный сайт доступен и проблем с сайтом нет. Что делаю не так, ,буду рад вашему проффессиональному совету и в какую сторону идти мне! Вопрос заключается в том, что адаптер содержит пустой объект, т.е response.body () ничего не возвращает.
Api Client:
public class ApiClient {
private static final String BASE_URL = "http://www.nbrb.by/API/ExRates/";
public static Retrofit getRetrofit() {
Gson gson = new GsonBuilder().create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
return retrofit;
}
}
API interface:
public interface ApiInterface {
@GET("Currencies")
Call <List<Spisok> > getUserData();
}
Adapter
public class UserAdapter extends RecyclerView.Adapter<UserAdapter.VH> {
private List <Spisok> userData;
public UserAdapter(List<Spisok> userData) {
this.userData = userData;
}
@NonNull
@Override
public VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new VH (LayoutInflater.from(parent.getContext()).inflate(R.layout.user_data_item, parent, false));
}
@Override
public void onBindViewHolder(@NonNull VH holder, int position) {
Spisok userData = this.userData.get(position);
holder.name.setText(userData.getCurID());
holder.username.setText(userData.getCurName());
holder.email.setText(userData.getCurNameEng());
}
@Override
public int getItemCount() {
return userData.size();
}
public class VH extends RecyclerView.ViewHolder {
TextView name;
TextView username;
TextView email;
public VH(@NonNull View itemView) {
super(itemView);
name = itemView.findViewById(R.id.name);
username = itemView.findViewById(R.id.username);
email = itemView.findViewById(R.id.email);
}
}
}
Models:
public class Spisok implements Serializable {
@SerializedName("Cur_ID")
private int curID;
@SerializedName("Cur_Name_EngMulti")
private String curNameEngMulti;
@SerializedName("Cur_Name")
private String curName;
@SerializedName("Cur_Name_Bel")
private String curNameBel;
@SerializedName("Cur_ParentID")
private int curParentID;
@SerializedName("Cur_Code")
private String curCode;
@SerializedName("Cur_Abbreviation")
private String curAbbreviation;
@SerializedName("Cur_Periodicity")
private int curPeriodicity;
@SerializedName("Cur_DateStart")
private String curDateStart;
@SerializedName("Cur_QuotName_Eng")
private String curQuotNameEng;
@SerializedName("Cur_QuotName")
private String curQuotName;
@SerializedName("Cur_Name_Eng")
private String curNameEng;
@SerializedName("Cur_Name_BelMulti")
private String curNameBelMulti;
@SerializedName("Cur_DateEnd")
private String curDateEnd;
@SerializedName("Cur_NameMulti")
private String curNameMulti;
@SerializedName("Cur_QuotName_Bel")
private String curQuotNameBel;
@SerializedName("Cur_Scale")
private int curScale;
public void setCurID(int curID){
this.curID = curID;
}
public int getCurID(){
return curID;
}
public void setCurNameEngMulti(String curNameEngMulti){
this.curNameEngMulti = curNameEngMulti;
}
public String getCurNameEngMulti(){
return curNameEngMulti;
}
public void setCurName(String curName){
this.curName = curName;
}
public String getCurName(){
return curName;
}
public void setCurNameBel(String curNameBel){
this.curNameBel = curNameBel;
}
public String getCurNameBel(){
return curNameBel;
}
public void setCurParentID(int curParentID){
this.curParentID = curParentID;
}
public int getCurParentID(){
return curParentID;
}
public void setCurCode(String curCode){
this.curCode = curCode;
}
public String getCurCode(){
return curCode;
}
public void setCurAbbreviation(String curAbbreviation){
this.curAbbreviation = curAbbreviation;
}
public String getCurAbbreviation(){
return curAbbreviation;
}
public void setCurPeriodicity(int curPeriodicity){
this.curPeriodicity = curPeriodicity;
}
public int getCurPeriodicity(){
return curPeriodicity;
}
public void setCurDateStart(String curDateStart){
this.curDateStart = curDateStart;
}
public String getCurDateStart(){
return curDateStart;
}
public void setCurQuotNameEng(String curQuotNameEng){
this.curQuotNameEng = curQuotNameEng;
}
public String getCurQuotNameEng(){
return curQuotNameEng;
}
public void setCurQuotName(String curQuotName){
this.curQuotName = curQuotName;
}
public String getCurQuotName(){
return curQuotName;
}
public void setCurNameEng(String curNameEng){
this.curNameEng = curNameEng;
}
public String getCurNameEng(){
return curNameEng;
}
public void setCurNameBelMulti(String curNameBelMulti){
this.curNameBelMulti = curNameBelMulti;
}
public String getCurNameBelMulti(){
return curNameBelMulti;
}
public void setCurDateEnd(String curDateEnd){
this.curDateEnd = curDateEnd;
}
public String getCurDateEnd(){
return curDateEnd;
}
public void setCurNameMulti(String curNameMulti){
this.curNameMulti = curNameMulti;
}
public String getCurNameMulti(){
return curNameMulti;
}
public void setCurQuotNameBel(String curQuotNameBel){
this.curQuotNameBel = curQuotNameBel;
}
public String getCurQuotNameBel(){
return curQuotNameBel;
}
public void setCurScale(int curScale){
this.curScale = curScale;
}
public int getCurScale(){
return curScale;
}
@Override
public String toString(){
return
"Spisok{" +
"cur_ID = '" + curID + '\'' +
",cur_Name_EngMulti = '" + curNameEngMulti + '\'' +
",cur_Name = '" + curName + '\'' +
",cur_Name_Bel = '" + curNameBel + '\'' +
",cur_ParentID = '" + curParentID + '\'' +
",cur_Code = '" + curCode + '\'' +
",cur_Abbreviation = '" + curAbbreviation + '\'' +
",cur_Periodicity = '" + curPeriodicity + '\'' +
",cur_DateStart = '" + curDateStart + '\'' +
",cur_QuotName_Eng = '" + curQuotNameEng + '\'' +
",cur_QuotName = '" + curQuotName + '\'' +
",cur_Name_Eng = '" + curNameEng + '\'' +
",cur_Name_BelMulti = '" + curNameBelMulti + '\'' +
",cur_DateEnd = '" + curDateEnd + '\'' +
",cur_NameMulti = '" + curNameMulti + '\'' +
",cur_QuotName_Bel = '" + curQuotNameBel + '\'' +
",cur_Scale = '" + curScale + '\'' +
"}";
}
}
MainActivity
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private UserAdapter userAdapter;
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.rv);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
loadData();
}
private void loadData() {
Retrofit retrofit = ApiClient.getRetrofit();
ApiInterface apiInterface = retrofit.create(ApiInterface.class);
Call<List<Spisok>> call = apiInterface.getUserData();
call.enqueue(new Callback<List<Spisok>>() {
@Override
public void onResponse(Call<List<Spisok>> call, Response<List<Spisok>> response) {
if (response.isSuccessful() &&response.code() == 200) {
Log.d(TAG, "onResponse: " + response.body());
userAdapter = new UserAdapter(response.body());
recyclerView.setAdapter(userAdapter);
}
}
@Override
public void onFailure(Call<List<Spisok>> call, Throwable t) {
}
});
}
}
Заранее благодарю за помощь!