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