将查询参数添加到Retrofit中以在Android Studio中获取

时间:2018-09-07 20:54:35

标签: android retrofit

我正在尝试使用改造从我的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添加到回调方法中。这是我第一次使用改造

3 个答案:

答案 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(“ ..”)是您希望在“?”之后提供的一些数据

希望您已经理解。