【问题标题】:Retrofit error android改造错误android
【发布时间】:2014-09-03 04:53:43
【问题描述】:

我一直对在我的应用程序中实现 Retrofit 以发出简单的 POST 和 GET 请求感到好奇。但是,我在解决这个问题时遇到了问题。今天我决定尝试将它集成到我的应用程序中,但遇到了麻烦。如果你能看看我的代码,那就太好了。这是我得到的错误

“原因:retrofit.RetrofitError:retrofit.converter.ConversionException:com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:应为BEGIN_ARRAY,但在第1行第2列是BEGIN_OBJECT”

如果您想尝试一下,这是 api 调用。 http://api.thebookofeveryone.com/social/makelove?phrase=love

我也知道我现在没有对返回的图像对象做任何事情,因为我需要先解决这个问题。

谢谢。

主活动

public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    extraThread task = new extraThread();
    task.execute();

}


public class extraThread extends AsyncTask<Void, Void, Void>{

    @Override
    protected Void doInBackground(Void... params) {
        // TODO Auto-generated method stub
        RetrofitInterface.getImageApiClient().getImage("love");
        return null;
    }

}

RetroFit 界面

public class RetrofitInterface {

    private static ImageApiInterface sImageService;

    public static ImageApiInterface getImageApiClient() {
        if (sImageService == null) {
            RestAdapter restAdapter = new RestAdapter.Builder()
                    .setEndpoint("http://api.thebookofeveryone.com")
                    .build();

            sImageService = restAdapter.create(ImageApiInterface.class);
        }

        return sImageService;
    }

    public interface ImageApiInterface {
        @GET("/social/makelove")
        Image getImage(@Query("phrase") String phrase);
    }


}

图像类

public class Image {
    boolean success;
    String url;
}

【问题讨论】:

    标签: android retrofit


    【解决方案1】:

    这是一个 JSON 解析错误。将您的 Image 类更改为:

    public class Image {
    
        private Boolean success;
        private String url;
    
        public Boolean getSuccess() {
            return success;
        }
    
        public void setSuccess(Boolean success) {
            this.success = success;
        }
    
        public String getUrl() {
            return url;
        }
    
        public void setUrl(String url) {
            this.url = url;
        }
    
    }
    

    或者:

    public class Image {
    
        Boolean success;
        String url;
    
    }
    

    一切正常。

    要从 JSON 或 JSON-Schema 创建 POJO,我推荐 http://www.jsonschema2pojo.org/。真的很有帮助。

    【讨论】:

    • 很酷,谢谢! gson 转换器是否使用对象类中编写的显式获取和设置?
    • 并非如此。估计是类型不对。你需要布尔值而不是布尔值。
    猜你喜欢
    • 2015-12-28
    • 2014-10-21
    • 2015-03-06
    • 2018-07-24
    • 2019-11-17
    • 2018-07-01
    • 1970-01-01
    • 2018-11-14
    • 1970-01-01
    相关资源
    最近更新 更多