Почему вылетает ошибка при get запросе
Пытаюсь получить данные от апи через гет запрос:
https://currate.ru/api/?get=currency_list&key=5556c4fe4eea37cbea8e6fec6240b5a5
Но возвращает:
D/MainActivity: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
Код:
APIClient.java
package com.ss.retrofitlesson;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
class APIClient {
private static String BASE_URL = "https://currate.ru/";
private static Retrofit retrofit;
static Retrofit getClient(){
if (retrofit == null){
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}
APIInterface.java
package com.ss.retrofitlesson;
import java.util.List;
import retrofit2.Call;
import retrofit2.http.GET;
public interface APIInterface {
@GET("api/?get=currency_list&key=5556c4fe4eea37cbea8e6fec6240b5a5")
Call<List<Currencies>> getCurrencies();
}
Currencies.java
package com.ss.retrofitlesson;
import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Currencies {
@SerializedName("status")
@Expose
private String status;
@SerializedName("message")
@Expose
private String message;
@SerializedName("data")
@Expose
private List<String> data = null;
public Currencies(String status, String message, List<String> data){
this.status = status;
this.message = message;
this.data = data;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public List<String> getData() {
return data;
}
public void setData(List<String> data) {
this.data = data;
}
@Override
public String toString() {
return "Currencies{" +
"status='" + status + '\'' +
", message='" + message + '\'' +
", data=" + data +
'}';
}
}
MainActivity.java
package com.ss.retrofitlesson;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import android.util.Log;
import java.util.ArrayList;
import java.util.Currency;
import java.util.List;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class MainActivity extends AppCompatActivity {
RecyclerView recyclerView;
List<Currencies> currenciesList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
currenciesList = new ArrayList<>();
APIInterface apiInterface = APIClient.getClient().create(APIInterface.class);
Call<List<Currencies>> call = apiInterface.getCurrencies();
call.enqueue(new Callback<List<Currencies>>() {
@Override
public void onResponse(Call<List<Currencies>> call, Response<List<Currencies>> response) {
currenciesList = response.body();
Log.d("MainActivity", currenciesList.toString());
}
@Override
public void onFailure(Call<List<Currencies>> call, Throwable t) {
Log.d("MainActivity", t.toString());
}
});
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ss.retrofitlesson">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>