对于AndroidAnnotations REST客户端日志记录(Rest client loggi

2019-10-20 09:20发布

我试图用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框架的水平来制定某种选项?

我也想看看我发送请求的主体。

谢谢你的帮助!

Answer 1:

在这里我们看到,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 )。



Answer 2:

虽然我不使用AndroidAnnotations并不能直接回答你的问题,我想提出一个替代的解决方案。 你可以使用一个名为Fiddler一个伟大的小应用程序。 它可用于调试网络的活动,无论是请求,响应HTTP标头或几乎其他任何将在REST API通信没关系奇迹。

你可以找到关于如何设置你的环境中使用Fiddler一个完整的教程在这里 ,但仅举几例关键步骤(幸得链接页面,你也可以找到有用的图片有)

设置提琴手:

  1. 点击菜单工具| 小提琴手选项,然后选择连接选项卡
  2. 做的笔记口“上的提琴手监听”(通常是8888)
  3. 确保“允许远程计算机连接”复选框被选中
  4. 切换到HTTPS选项卡
  5. 确保复选框“捕获HTTPS连接”和“解密HTTPS流量”都被选中
  6. 重新启动提琴手
  7. 记下的Windows PC上的PC的IP地址,关闭非必要的应用程序(以尽量减少网络流量正在通过提琴手路由)

设置你的设备:

  1. 点选设置,则无线网络
  2. 找到你连接上网络(通常是第一个上市的),然后点击并按住选择弹出修改网络
  3. 向下滚动,并启用“显示高级选项”
  4. 更改“代理设置”手动
  5. 在“代理服务器主机名”从上面进入Windows PC的IP地址
  6. 下“代理端口”从上面进入的Fiddler端口(通常8888)
  7. 点击保存并等待片刻网络重新连接

现在你会看到所有你的REST API调用所需的细节使得调试更加容易。



文章来源: Rest client logging for AndroidAnnotations