我正在尝试使用AndroidAnnotation的rest客户端来访问Web服务。我收到以下错误:
org.springframework.http.converter.HttpMessageNotReadableException:
Could not read JSON: Unexpected character ('f' (code 102)):
was expecting double-quote to start field name
如何让其余客户端记录收到的实际响应?我无法想象为什么我的网络服务会返回此响应,但我无法调试它,除非我能看到完整的响应。我是否必须在Spring框架级别设置某种选项?
我还希望看到我发送的请求的正文。
感谢您的帮助!
答案 0 :(得分:3)
Here我们看到AndroidAnnotations是Spring Android RestTemplate模块的包装器。 RestTemplate
的代码为here。因此,我们可以找出用于记录的TAG:
private static final String TAG = "RestTemplate";
您是否无法查看此TAG的日志条目?你使用哪种转换器/提取器?请发布调用堆栈。
在wiki中,他们建议使用Interceptor
来记录请求/响应。所以你可以实现自己的拦截器,如:
public class LoggingInterceptor implements ClientHttpRequestInterceptor {
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] data, ClientHttpRequestExecution execution) throws IOException {
logRequest(request);
ClientHttpResponse response = execution.execute(request, data);
logResponse(response);
return response;
}
private void logRequest(HttpRequest request) {
// log it
}
private void logResponse(ClientHttpResponse response) {
// log it
}
}
您可以在@Rest
注释(字段interceptors
)中启用拦截器。
答案 1 :(得分:0)
虽然我不使用AndroidAnnotations
并且无法直接回答您的问题,但我想提出另一种解决方案。您可以使用一个名为Fiddler的小实用程序。它可以为调试网络活动创造奇迹,无论是请求,响应,HTTP标头还是几乎任何在REST API通信中都很重要的事情。
您可以找到有关如何设置环境以使用Fiddler here的完整教程,但请列出几个关键步骤(信用转到链接页面,您还可以在那里找到有用的图片)
设置Fiddler:
设置您的设备:
现在,您将看到REST API调用所需的所有详细信息,这使调试变得更加容易。