2017-01-17 45 views
-1

我有一個OkHttp 3響應,但我需要我爲此響應創建的原始請求。從OkHttp響應中獲取原始請求

我使用改造2爲好,所以我必須改造的調用和響應在回調中:

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

我怎樣才能獲得,是由我的應用程序創建的原始okhttp3.Request?

+0

感嘆,爲什麼現在downvote? –

回答

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(); 
} 

但是請注意,您在您的應用程序層創建的請求可以在添加攔截器已經被重建了,你會不一定知道這種變化。但是,以上將適用於大多數使用情況。