无法在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
答案
  1. Retrofit2更好,因为Retrofit已过时(最新版本于2014 https://github.com/square/retrofit/releases/tag/parent-1.6.0
  2. GsonConverterFactory可能带有下划线,因为您没有添加依赖项com.squareup.retrofit2:converter-gson
  3. 如果删除addCallAdapterFactory(GsonConverterFactory.create()),则Retrofit不知道如何将json反序列化为对象。 GsonConverterFactory在后台使用Gson库(https://github.com/google/gson)来反序列化服务器json响应。

以上是关于无法在Android Retrofit中为我的班级创建转换器的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio - 使用 retrofit2 从 restdb 获取信息

在 Android 中为我的应用程序抛出 IllegalStateException

在 Javascript 中为数字添加逗号

无法在 .htaccess 中为我的 php 网站编写重写规则

com.google.gson.internal.LinkedTreeMap 无法转换为我的班级[重复]

我无法在 Unity 中为我的预制件分配脚本