Хотя я видел много решений этой проблемы, я не нашел точного ответа на свою проблему.Я получаю это исключение: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 12 path $
Я не знаю, как решить эту проблему.
Все, что я хочу сделать, это отправить uuid пользователя и дату установки приложения и получить номер пользователя.
Интерфейс:
public interface UserIdApi {
String Url = "http://--.---.-.---:---- /"; // I hide URL
@FormUrlEncoded
@POST("api/add/user")
Call<UserIdData> postUserData (@FieldMap HashMap<String, String> param);
}
Код клиента:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(UserIdApi.Url)
.addConverterFactory(GsonConverterFactory.create())
.build();
UserIdApi userIdApi = retrofit.create(UserIdApi.class);
HashMap<String, String> input = new HashMap<>();
input.put("uuid", userDeviceID ); // DeviceID Like 2f4d2d4c...
input.put("date", installDateString); // installDate Like 2018-11-13
userIdApi.postUserData(input).enqueue(new Callback<UserIdData>() {
@Override
public void onResponse( Call<UserIdData> call, Response<UserIdData> response) {
if(response.isSuccessful())
{
int responseCode = response.code();
Log.d("Code", responseCode+"");
UserIdData uuid = response.body();
}
else
{
Log.e("Not Success", "");
}
}
@Override
public void onFailure(Call<UserIdData> call, Throwable t) {
Log.e("Failure",t.getMessage());
}
});
Мой класс UserIdData:
public class UserIdData {
@SerializedName("result")
@Expose
public String result;
@SerializedName("data")
@Expose
public List<Datum> data = null;
public UserIdData () {
}
public UserIdData (String result, List<Datum> data) {
super();
this.result = result;
this.data = data;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public List<Datum> getData() {
return data;
}
public void setData(List<Datum> data) {
this.data = data;
}
public class Datum {
@SerializedName("userid")
@Expose
public Integer userid;
public Datum() {
}
public Datum(Integer userid) {
super();
this.userid = userid;
}
public Integer getUserid() {
return userid;
}
public void setUserid(Integer userid) {
this.userid = userid;
}
}
}
PostMan:
{
"result": "success",
"data": [
{
"userid": 105
}
]
}
Если я очиститьСписок в классе UserIdData, я получил 200 response.code, и я также проверил с почтальоном.Но я все еще не могу получить userid
.И также я убедился, что в результате получен «успех», но идентификатор пользователя остается нулевым.Я думаю, что у меня проблема с моим классом UserIdData, но я точно не знаю, в чем проблема .. Как я могу решить эту проблему ..