我想从API获取所有对象项并将它们放在ListView中,但是我似乎无法使其工作。 它总是返回“获取数据失败”。
这是我打电话给的API。
最后一个数字是“公寓ID”,它由相关的房间组成,根据ID,它会显示房间列表。
示例实现:
df1<-read.table(text="Id Rat Time Score
1 4 Time1 15
1 5 Time2 18
1 11 Time3 19
1 16 Time4 17
2 5 Time1 18
2 5 Time2 18
2 11 Time3 14
2 16 Time4 13
3 3 Time1 12
3 6 Time2 16
3 10 Time3 17
3 15 Time4 12
4 4 Time1 16
4 6 Time2 20
4 12 Time3 17
4 17 Time4 15
", h=T)
我的存储库类-
data Element = Sun {
elemColorStart :: Color,
elemColorEnd :: Color,
elemCoords :: Coords,
elemPeriod :: Float,
elemSize :: Float,
elemSteps :: Step,
elemTime :: Float
}
| Cloud {
elemKind :: CloudKind,
elemColorMain :: Color,
elemCoords :: Coords,
elemRans :: [Float],
elemSize' :: Size',
elemSteps :: Step,
elemTime :: Float
}
... etc
API配置
private void initView() {
RoomRepository roomRepository = new RoomRepository();
Intent intent = getIntent();
final String apartmentId = "rooms?apartmentId=" + intent.getStringExtra(MainActivity.APARTMENTID);
roomRepository.getRoom(this, apartmentId, new CallBackData<List<Room>>() {
@Override
public void onSuccess(List<Room> rooms) {
Toast.makeText(RoomListActivity.this, "Get data successful", Toast.LENGTH_SHORT).show();
if (rooms.size() == 0)
Toast.makeText(RoomListActivity.this, "No Room found!", Toast.LENGTH_SHORT).show();
else
buildLayout(rooms);
}
@Override
public void onFail(String msg) {
Toast.makeText(RoomListActivity.this, "Get data Failed ", Toast.LENGTH_SHORT).show();
}
});
}
答案 0 :(得分:2)
您的网址中有一个额外的“ /”,这会导致错误。查看下面提到的代码行:
public static final String GET_APARTMENT_ROOM = "hoangapi/";
它的末尾有一个'/'。
@GET(configAPI.GET_APARTMENT_ROOM + "/{apartmentId}")
它的开头有一个'/'。
连接它们时,它会创建hoangapi//room?apartmentId=
。
真正的原因是双斜杠。 删除apartmentId之前的一个,这样就可以了。
答案 1 :(得分:0)
隔离错误后,您可以看到该错误位于应用程序和服务器之间,或者服务器响应之后。
因此,您需要调试代码并发现调用onFail()的位置。如果response为null时调用,则需要测试de app与服务器之间的连接。如果在列表的转换中,则需要修改您的域并与json服务器进行比较。
答案 2 :(得分:0)
尝试
public interface RoomSerivce {
@GET("hoangapi/rooms")
Call<ResponseBody> getRoom(@Query("apartmentId") String apartmentId);
}