Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AndroidAnnotations的Rest客户端日志记录_Android_Spring_Web Services_Rest_Android Annotations - Fatal编程技术网

AndroidAnnotations的Rest客户端日志记录

AndroidAnnotations的Rest客户端日志记录,android,spring,web-services,rest,android-annotations,Android,Spring,Web Services,Rest,Android Annotations,我正在尝试使用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 如何使rest客户端记录它收到的实际响应?

我正在尝试使用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
如何使rest客户端记录它收到的实际响应?我无法想象为什么我的web服务会返回这个响应,但除非我能看到完整的响应,否则我无法调试它。我必须在Spring框架级别设置某种选项吗

我也想看看我发送的请求的正文


谢谢你的帮助

虽然我不使用
AndroidAnnotations
,也不能直接回答您的问题,但我想提出另一种解决方案。你可以使用一个叫做Fiddler的小实用程序。它可以为调试网络活动创造奇迹,无论是请求、响应、HTTP头还是RESTAPI通信中的任何其他重要内容

你可以找到一个关于如何设置你的环境以使用Fiddler的完整教程,但要列举几个关键步骤(链接页面上有介绍,你也可以在那里找到有用的图片)

设置小提琴手:

  • 单击菜单“工具|小提琴手选项”,然后选择“连接”选项卡
  • 记下“Fiddler侦听”端口(通常为8888)
  • 确保选中了“允许远程计算机连接”复选框
  • 切换到HTTPS选项卡
  • 确保选中了“捕获HTTPS连接”和“解密HTTPS流量”的复选框
  • 重新启动小提琴手
  • 记下电脑的IP地址关闭Windows电脑上的非必要应用程序(以最小化通过Fiddler路由的网络流量)
  • 设置您的设备:

  • 点击设置,然后点击Wi-Fi
  • 找到您连接的网络(通常是列出的第一个网络),然后轻按并按住 从弹出窗口中选择“修改网络”
  • 向下滚动并启用“显示高级选项”
  • 将“代理设置”更改为手动
  • 在“代理主机名”下,从上面输入Windows PC IP地址
  • 在“代理端口”下,从上方输入Fiddler端口(通常为8888)
  • 点击Save并等待片刻,以便网络重新连接
  • 现在,您将看到REST API调用所需的所有详细信息,这使得调试更加容易。

    我们看到AndroidAnnotations是Spring Android RestTemplate模块的包装器。
    RestTemplate
    的代码为。因此,我们可以找出哪个标签用于日志记录:

    private static final String TAG = "RestTemplate";
    
    您无法查看此标记的日志条目吗?您使用的是哪种转换器/提取器?请张贴调用堆栈

    在中,他们建议使用
    拦截器
    记录请求/响应。因此,您可以实现自己的拦截器,如:

    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
    )中启用拦截器。

    实际上我以前没有使用restapi,但我认为您可以按照建议使用
    拦截器获得响应。