获取项目列表时,API始终返回onFail

时间:2019-03-31 18:19:53

标签: android

我想从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();
            }
        });
    }

3 个答案:

答案 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);
}