首页 文章

从OkHttp Response获取原始请求

提问于
浏览
-1

我有一个OkHttp 3响应,但我需要我为此响应做出的原始请求 .

我也在使用Retrofit 2,所以我在回调中有Retrofit的Call和Response:

@Override public void onResponse(Call<R> call, Response<R> response) {
  okhttp3.Response raw = response.raw();
}

如何获取由我的应用程序创建的原始okhttp3.Request?

1 回答

  • 0

    请注意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中重新创建,并且您不一定知道该更改 . 但是,上述内容适用于大多数用例 .

相关问题