我在我的Android应用程序中使用retrofit的库来从我服务器上的数据库中的“Sync”表中检索记录(使用Loopback生成端点)。我创建了一个自定义端点,需要一个long类型的变量,它是unix格式的时间戳,例如1466598649119.问题是当我调用端点时
@GET("Syncs")
Call<List<Sync>> getAllSyncsAfterThisTimeStamp(@Query(("getRecodsAfterTimestamp?timeChanged=")) long timeChanged);
public static final Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://10.0.2.2:3000/api/")
.addConverterFactory(GsonConverterFactory.create())
.build();
使用此值:
Long timeStamp = 1466598625506L;
Log.e(TAG, "Job Service task is running...");
getAllSyncsCall = espcService.getAllSyncsAfterThisTimeStamp(timeStamp);
getAllSyncsCall.enqueue(EspcJobSheculerService.this);
它应该只返回时间戳之后或者等于提供的记录,而是返回所有记录(我表中的记录总数是3)
我知道我的终点是有效的,因为我在Loopback的API资源管理器上测试它并且它返回正确数量的记录,所以显然我在设备站点上做错了。
答案 0 :(得分:2)
getRecodsAfterTimestamp?timeChanged="
是问题所在。 getRecodsAfterTimestamp
不是查询的一部分,而是您的路径的一部分。 Retrofit可以添加=
和?
@GET("Syncs/getRecodsAfterTimestamp")
Call<List<Sync>> getAllSyncsAfterThisTimeStamp(@Query(("timeChanged")) long timeChanged);
应该这样做