我试图用AndroidAnnotation休息客户端访问Web服务。 我收到以下错误:
org.springframework.http.converter.HttpMessageNotReadableException:
Could not read JSON: Unexpected character ('f' (code 102)):
was expecting double-quote to start field name
我怎样才能让其他客户端登录其实际收到的回应? 我无法想象,为什么我的web服务将返回该响应,但我不能调试它,除非我可以看到完整的响应。 我必须在Spring框架的水平来制定某种选项?
我也想看看我发送请求的主体。
谢谢你的帮助!
在这里我们看到,AndroidAnnotations是围绕着春天的Android RestTemplate模块的包装。 对于代码RestTemplate
是在这里 。 因此,我们可以找出哪些变量用于记录:
private static final String TAG = "RestTemplate";
您无法看到日志条目这个标签吗? 其中转换器/提取您使用的? 请张贴调用堆栈。
在维基他们推荐使用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
)。
虽然我不使用AndroidAnnotations
并不能直接回答你的问题,我想提出一个替代的解决方案。 你可以使用一个名为Fiddler一个伟大的小应用程序。 它可用于调试网络的活动,无论是请求,响应HTTP标头或几乎其他任何将在REST API通信没关系奇迹。
你可以找到关于如何设置你的环境中使用Fiddler一个完整的教程在这里 ,但仅举几例关键步骤(幸得链接页面,你也可以找到有用的图片有)
设置提琴手:
- 点击菜单工具| 小提琴手选项,然后选择连接选项卡
- 做的笔记口“上的提琴手监听”(通常是8888)
- 确保“允许远程计算机连接”复选框被选中
- 切换到HTTPS选项卡
- 确保复选框“捕获HTTPS连接”和“解密HTTPS流量”都被选中
- 重新启动提琴手
- 记下的Windows PC上的PC的IP地址,关闭非必要的应用程序(以尽量减少网络流量正在通过提琴手路由)
设置你的设备:
- 点选设置,则无线网络
- 找到你连接上网络(通常是第一个上市的),然后点击并按住选择弹出修改网络
- 向下滚动,并启用“显示高级选项”
- 更改“代理设置”手动
- 在“代理服务器主机名”从上面进入Windows PC的IP地址
- 下“代理端口”从上面进入的Fiddler端口(通常8888)
- 点击保存并等待片刻网络重新连接
现在你会看到所有你的REST API调用所需的细节使得调试更加容易。