对构建的请求网址

时间:2015-11-19 01:13:53

标签: android retrofit

如果从响应中解析JSON失败,那么能够记录响应有问题的特定API请求将是有益的。为此,我想添加一个CallAdapterFactory来维护请求的网址,并将其附加到Callback#onFailure中的错误消息中。

我查看了OkHttpCall代码,并且createRawCall()中构建的网址永远不会超出OkHttpCall。有没有办法访问由Retrofit构建的URL字符串以记录请求?

2 个答案:

答案 0 :(得分:1)

您可以使用Interceptor

执行此操作
private static class UrlInterceptor implements Interceptor {
    @Override
    public Response intercept(Chain chain) throws IOException {
        Request request = chain.request();
        String url = request.urlString();

        Log.d(TAG, url);

        Response response = chain.proceed(request);
        return response;
    }
}

您可以将其添加到您的客户端,如下所示:

OkHttpClient client = new OkHttpClient();
client.interceptors().add(new UrlInterceptor());

如果您想记录更多详细信息,可以查看HttpLoggingInterceptor

答案 1 :(得分:0)

以下针对Okhttp3的解决方案:

static class URLInterceptor implements Interceptor {

    @Override
    public Response intercept(Chain chain) throws IOException {
       Request request = chain.request();
        String url = request.url().toString();

        Log.d("TAG", url);
        return chain.proceed(request);
    }
}