我是Android开发的新手。我有我的这个小项目,我需要通过访问我在我的mac上使用deployd本地创建的API来开始工作。 api可从localhost:2403 / subject访问。我已经关注了改造和gson指南,但到目前为止我只保留错误,没有任何可行的工作。此时我有点卡住了。我需要从api获取主题并将它们显示在可滚动的列表中。
我已经设置了Retrofit和Gson以便能够与API通信。因此我制作了一些类和接口。
首先是主题类
Name____#___#___#__ _____________________
acari | 1 | 2 | 3 | |__A__|__B__|__C__|__ ...
angle | 1 | 2 | 3 | | |______________
arhat | 1 | 2 | 3 | |Name_|_#_|_#_|_#_
akkra | 1 | 2 | 3 | |
amiel | 1 | 2 | 3 | TO |acari| 1 | 2 | 3 |
barce | 1 | 2 | 3 | |angle| 1 | 2 | 3 |
bogie | 1 | 2 | 3 | |arhat| 1 | 2 | 3 |
betty | 1 | 2 | 3 | |akkra| 1 | 2 | 3 |
brill | 1 | 2 | 3 | |amiel| 1 | 2 | 3 |
blyth | 1 | 2 | 3 | |
然后我创建了一个HslSubjects类,它很简单,可以容纳我得到的所有主题。
public class Subject {
int id;
String name;
int ects;
int grade;
int period;
int main;
public int getMain() {
return main;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public int getEcts() {
return ects;
}
public int getGrade() {
return grade;
}
public int getPeriod() {
return period;
}
}
和api接口
public class HslSubjects {
List<Subject> subjects;
}
后跟适配器
public interface subjectEndpointApi {
@GET("/subjects")
Call<HslSubjects> loadSubjects();
}
最后在我的mainActivity中运行所有内容
public class SubjectResponse {
@SerializedName("subjects")
List<Subject> subjects;
public SubjectResponse() {
subjects = new ArrayList<Subject>();
}
public static SubjectResponse parseJSON(String response) {
Gson gson = new GsonBuilder().create();
SubjectResponse subjectResponse = gson.fromJson(response, SubjectResponse.class);
return subjectResponse;
}
}
但不知何故,它总是进入onFailure类。模拟器出现以下错误:
答案 0 :(得分:0)
似乎您的服务器JSON不是您在设备上所期望的。 错误说android想要JSON 对象,但你传递的json有点数组。
尝试添加日志记录,看看那里有什么问题。
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
所以我想你应该写一些类似的东西:
public interface subjectEndpointApi {
@GET("/subjects")
Call<List<Subject>> loadSubjects();
}