如何使用Retrofit2.0制作Java REST API GET请求?

时间:2016-09-06 14:06:32

标签: android rest retrofit retrofit2

我使用 Retrofit2.0 向我的 REST URL 发出GET请求。我不需要将任何参数传递给url来提出请求。 怎么可以提出这种类型的请求?

这是我的代码,我已经完成了!

接口::

public interface AllRolesAPI {
    @GET("/SportsApp/allroles")
    Call<AllRolesParams> getAllRoles();
}

Class :::    我使用Pojo库创建了一个类,它包含了setter和getter方法的所有变量。

public void requestRoles() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(ENDPOINT)
                .build();

        AllRolesAPI allRolesParams = retrofit.create(AllRolesAPI.class);
        Call<AllRolesParams> allRolesParamsCall = allRolesParams.getAllRoles();
        allRolesParamsCall.enqueue(new Callback<AllRolesParams>() {
            @Override
            public void onResponse(Call<AllRolesParams> call, Response<AllRolesParams> response) {
                //response.body().getErrDesc();
                Log.v("SignupActivity", "Response :: " + response.body().getErrDesc());
            }

            @Override
            public void onFailure(Call<AllRolesParams> call, Throwable t) {
                Log.v("SignupActivity", "Failure :: ");
            }
        });
    }

当我创建上述请求时,我在console ::

中遇到此错误
java.lang.IllegalArgumentException: Unable to create converter for class com.acknotech.kiran.navigationdrawer.AllRolesParams.

2 个答案:

答案 0 :(得分:1)

如果您的API的回复是JSON,则需要添加

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl(ENDPOINT)
    .addConverterFactory(GsonConverterFactory.create())
    .build();

为了能够使用GsonConverterFactory,您需要添加一个gradle依赖项。检查this。在你的情况下是

compile 'com.squareup.retrofit2:converter-gson:2.1.0'

(2.1.0是撰写本文时的最新版本)

答案 1 :(得分:0)

引用官方文档:

  

默认情况下,Retrofit只能将HTTP主体反序列化为OkHttp&#39; s   ResponseBody类型,它只能接受其RequestBody类型   @身体。可以添加转换器以支持其他类型。六兄弟   模块适应流行的序列化库以方便您使用。

     

Gson:com.squareup.retrofit2:converter-gson
  杰克逊:com.squareup.retrofit2:转换器 - 杰克逊
  莫西:com.squareup.retrofit2:转换器,魔石
  的Protobuf:com.squareup.retrofit2:转换器,protobuf的
  线材:com.squareup.retrofit2:转换线
  简单XML:com.squareup.retrofit2:converter-simplexml   标量(原语,盒装和字符串):com.squareup.retrofit2:converter-scalars

你试图在没有任何转换器的情况下解析JSON。您可以使用Retrofit进行各种转换。最受欢迎的是谷歌的Gson Converter。要使代码工作,请创建如下的改造适配器:

adapter = new Retrofit.Builder() //in your case replace adapter with Retrofit retrofit
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();

还要确保包含这些依赖项:

compile 'com.google.code.gson:gson:2.6.2'      
compile 'com.squareup.retrofit2:retrofit:2.1.0'       
compile 'com.squareup.retrofit2:converter-gson:2.1.0'

希望它有效。您可以参考official retrofit docsthis guidegson guide获取更多信息。