我使用 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.
答案 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 docs,this guide和gson guide获取更多信息。