2017-01-17 11 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(); 
} 

しかし、あなたはあなたのアプリケーション層で作成されたリクエストが追加インターセプタで再現されている可能性があることに注意し、必要になります必ずしもその変化について知っているとは限りません。しかし、ほとんどのユースケースでは上記が有効です。

関連する問題