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