我正在尝试使用改造从我的API获取记录,当我做这样的事情时,它工作得很好。
公共接口materialAPI {
@GET("/mlearningServices/Course") public void getMaterials(Callback<List<materialClass>> response); } public void getMaterials() { RestAdapter adapter = new RestAdapter.Builder().setEndpoint(Root_Url).build(); Log.i(TAG , "hERE IS THE LINK"+adapter.toString()); materialAPI api = adapter.create(materialAPI.class); api.getMaterials(new Callback <List<materialClass>>() { @Override public void success(List<materialClass> list, Response response) { materials = list; showList(); customAdapter customAdapter = new customAdapter(); listView.setAdapter(customAdapter); } @Override public void failure(RetrofitError error) { } }); }
上面的代码可以正常工作,我可以获取所有资料,但接下来要实现的是获取具有任何id的资料。当用户选择特定材料时,我想将id传递到get url中,以便获取记录
意味着我必须做这样的事情
@GET("/mlearningServices/Course/{myId}")
..
如何将myId添加到回调方法中。这是我第一次使用改造
答案 0 :(得分:1)
您要询问的称为path variable
。要设置一个,必须按以下方式重写方法签名:
public void getMaterials(@Path("myId") String id, Callback<List<materialClass>> response);
这样,定义为/ path / to / your / endpoint / {nameOfPathVariable}的变量将被注入传递给该方法的String参数中。您也可以将其定义为Integer,并且改造将尝试相应地对其进行强制转换。
答案 1 :(得分:1)
使用@Path
批注
@POST("/mlearningServices/Course/{myId}")
public void getMaterials(@Path("myId") String id, Callback<Response> response);
参考文献:
答案 2 :(得分:0)
解决方案:
您可以使用它来传递您的ID,使用@Path注释
@GET("/mlearningServices/Course/{myId}")
Call<materialClass> getMaterials(@Path("myId") String id);
@Path是您希望在问号(“?”)之前提供给GET方法的一些数据,@Query(“ ..”)是您希望在“?”之后提供的一些数据
希望您已经理解。