导致改进错误的Gson语法异常

时间:2013-12-10 20:12:31

标签: json gson retrofit

我正在使用Retrofit连接到自定义RESTful API。我测试通过Curl与设备/ API进行通信,以及在非Android系统(mac os x)上运行的一些测试Java代码。 curl和java命令返回预期的响应。

但是,使用改造,我不确定我是否在我的RestAdapter(即RestAdapter.Builder())中使用了不适当的配置来与该设备通信。

我得到的错误似乎是没有返回整个json内容,只有前47个字节左右。我希望这是我正在谈论的设备的行为,如果这意味着我需要实现Retrofit API文档中描述的异步回调,我很好奇。在我这样做之前,我希望得到一些有更多Retrofit经验的人的反馈。

错误如下(为公众消费而进行消毒):

12-06 08:50:52.962   28267-1735/com.mycompany.project D/Retrofit? [ 12-06 08:50:52.972 28267: 1735 D/Retrofit ]
    {"OBJECT1":{"@Version":1,"OBJECTARRAY1":[
12-06 08:50:52.972   28267-1735/com.mycompany.project D/Retrofit? <--- END HTTP (46-byte body)
12-06 08:50:52.982   28267-1735/com.mycompany.project W/System.err retrofit.RetrofitError: retrofit.converter.ConversionException: com.google.gson.JsonSyntaxException: java.io.EOFException: End of input at line 1 column 47

我正在设置RestAdapter:

    RestAdapter restAdapter = new RestAdapter.Builder()
            .setServer(serverUrl)
            .setClient(new OkClient(RestUtils.getHttpClient(3000, 3000, username, password)))
            .setRequestInterceptor(new RequestInterceptor() {
                @Override
                public void intercept(RequestFacade requestFacade) {
                    requestFacade.addHeader("Accept", "application/json");
                    requestFacade.addHeader("Client-Id", "12345");
                }
            })
            .setLogLevel(RestAdapter.LogLevel.FULL)
            .build();

    service = restAdapter.create(OBJECT1.class);

对此问题的任何见解将不胜感激。我理解这个错误与java.io.EOFException有关,但是我无法验证我从设备返回的内容,除了上面错误中显示的输出。我非常倾向于异步与同步是问题,但我愿意接受任何建议。

干杯!

0 个答案:

没有答案