मैं प्रमाणीकरण के लिए इस इंटरसेप्टर उपयोग करने के लिए कोशिश कर रहा हूँ:एंड्रॉयड - OkHttp इंटरसेप्टर - प्रतिक्रिया पहले से ही "भस्म"
public class CustomInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
// try the request
Response response = chain.proceed(request);
if (response shows expired token) {
// get a new token (I use a synchronous Retrofit call)
// create a new request and modify it accordingly using the new token
Request newRequest = request.newBuilder()...build();
// retry the request
return chain.proceed(newRequest);
}
// otherwise just pass the original response on
return response;
}
समस्या यह है कि मेरा चैक (प्रतिक्रिया समाप्त टोकन से पता चलता है) स्थिति से संबंधित नहीं है, मैं वास्तविक प्रतिक्रिया (शरीर सामग्री) की जांच करने की आवश्यकता है। तो जांच के बाद, प्रतिक्रिया "खपत" है और शरीर को तैयार करने का कोई भी प्रयास विफल हो जाएगा।
मैं "क्लोन" से पहले पढ़ा है, की तरह प्रतिक्रिया बफर करने की कोशिश की है:
public static String responseAsString(Response response){
Buffer clonedBuffer = response.body().source().buffer().clone();
return ByteString.of(clonedBuffer.readByteArray()).toString();
}
लेकिन यह काम नहीं करता है, clonedBuffer खाली है। किसी भी मदद की सराहना की जाएगी।
बहुत बहुत धन्यवाद! हल किया गया :) – aw4y
शायद मीडियाटाइप सामग्री टाइप = ** प्रतिक्रिया **। शरीर()। सामग्री टाइप() ;? –
ResponseBody.create (ContentType, bodyString) के लिए धन्यवाद; – Harry