无法在Android Retrofit中为我的班级创建转换器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在Android Retrofit中为我的班级创建转换器相关的知识,希望对你有一定的参考价值。
我正在尝试使用Retrofit开发客户端服务器应用程序。我的应用程序使用字符串“ image”发送到服务器json并使用字段“ name”响应一个json。
我的API:
public interface API
@FormUrlEncoded
@POST("/api/classification/imagenet")
Call<GestureJson> getName(@Body ImageJson json);
ImageJson:
public class ImageJson
public String imageString;
NameJson:
public class NameJson
public int gestureNumber;
当用户按下Main Activity MyVoid中的按钮时(已经知道URL):
public void MyVoid()
String requestUrl = url;
Retrofit retrofit = new Retrofit.Builder()
.addCallAdapterFactory(GsonConverterFactory.create())
.baseUrl(requestUrl)
.build();
API api = retrofit.create(API.class);
ImageJson json = new ImageJson();
json.imageString = image_uri.toString();
Call<GestureJson> call = api.getName(json);
call.enqueue(new Callback<GestureJson>()
@Override
public void onResponse(Call<GestureJson> call, Response<GestureJson> response)
if (response.isSuccessful())
status = RESPONSE_SUCCESS;
else
status = RESPONSE_FAIL;
@Override
public void onFailure(Call<GestureJson> call, Throwable t)
);
我有三个问题:
1)我不知道Retrofit和Retrofit2有什么区别。有什么更好用的?
2).addCallAdapterFactory(GsonConverterFactory.create())强调了错误的程度(在Retorfit和Retrofit2中)。
3)如果删除.addCallAdapterFactory(GsonConverterFactory.create()),则可以编译应用程序。但是我有一个问题:
E/androidRuntime: FATAL EXCEPTION: main
Process: com.example.opencvproject, PID: 17742
java.lang.IllegalArgumentException: Unable to create converter for class com.example.opencvproject.GestureJson
for method API.getGesture
答案
- Retrofit2更好,因为Retrofit已过时(最新版本于2014 https://github.com/square/retrofit/releases/tag/parent-1.6.0)
- GsonConverterFactory可能带有下划线,因为您没有添加依赖项
com.squareup.retrofit2:converter-gson
- 如果删除
addCallAdapterFactory(GsonConverterFactory.create())
,则Retrofit不知道如何将json反序列化为对象。 GsonConverterFactory在后台使用Gson库(https://github.com/google/gson)来反序列化服务器json响应。
以上是关于无法在Android Retrofit中为我的班级创建转换器的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio - 使用 retrofit2 从 restdb 获取信息
在 Android 中为我的应用程序抛出 IllegalStateException
无法在 .htaccess 中为我的 php 网站编写重写规则