我有一个OkHttp 3响应,但我需要我为此响应做出的原始请求 .
我也在使用Retrofit 2,所以我在回调中有Retrofit的Call和Response:
@Override public void onResponse(Call<R> call, Response<R> response) { okhttp3.Response raw = response.raw(); }
如何获取由我的应用程序创建的原始okhttp3.Request?
请注意Response.request()是"the wire-level request that initiated this HTTP response."它不一定是原始请求 .
以下将备份到第一个响应并获取其请求:
static Request originalRequest(okhttp3.Response response) { while (true) { okhttp3.Response prior = response.priorResponse(); if (prior == null) { break; } response = prior; } return response.request(); }
但请注意,您在应用程序层创建的请求可能已在添加的Interceptor中重新创建,并且您不一定知道该更改 . 但是,上述内容适用于大多数用例 .
1 回答
请注意Response.request()是"the wire-level request that initiated this HTTP response."它不一定是原始请求 .
以下将备份到第一个响应并获取其请求:
但请注意,您在应用程序层创建的请求可能已在添加的Interceptor中重新创建,并且您不一定知道该更改 . 但是,上述内容适用于大多数用例 .