1

我正在使用 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 有关,但无法验证我从设备返回的内容,除了上面显示的错误输出。我非常倾向于异步与同步是问题,但我愿意接受任何建议。

干杯!

4

0 回答 0