হতে পারে আমার প্রতিক্রিয়াটি বেশ দেরিতে হয়েছে, তবে এটি 21 স্তরের নীচে এবং এর উপরে API কভার করে ।
শিরোনাম যুক্ত করতে আমাদের প্রতিটি অনুরোধটি আটকাতে হবে এবং প্রয়োজনীয় শিরোনাম সহ একটি নতুন তৈরি করা উচিত ।
সুতরাং আমাদের উভয় ক্ষেত্রেই বলা উচিত ' ইন্টারসেপ্ট রিকোয়েস্ট পদ্ধতি' ওভাররাইড করা উচিত : ১. এপিআই-এর জন্য স্তর 21 পর্যন্ত; ২.আইপিএল স্তর 21+ এর জন্য
webView.setWebViewClient(new WebViewClient() {
@SuppressWarnings("deprecation")
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
return getNewResponse(url);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
String url = request.getUrl().toString();
return getNewResponse(url);
}
private WebResourceResponse getNewResponse(String url) {
try {
OkHttpClient httpClient = new OkHttpClient();
Request request = new Request.Builder()
.url(url.trim())
.addHeader("Authorization", "YOU_AUTH_KEY")
.addHeader("api-key", "YOUR_API_KEY")
.build();
Response response = httpClient.newCall(request).execute();
return new WebResourceResponse(
null,
response.header("content-encoding", "utf-8"),
response.body().byteStream()
);
} catch (Exception e) {
return null;
}
}
});
প্রতিক্রিয়ার ধরণটি প্রক্রিয়া করা উচিত তবে আপনি পরিবর্তন করতে পারেন
return new WebResourceResponse(
null,
response.header("content-encoding", "utf-8"),
response.body().byteStream()
);
প্রতি
return new WebResourceResponse(
getMimeType(url),
response.header("content-encoding", "utf-8"),
response.body().byteStream()
);
এবং পদ্ধতি যুক্ত করুন
private String getMimeType(String url) {
String type = null;
String extension = MimeTypeMap.getFileExtensionFromUrl(url);
if (extension != null) {
switch (extension) {
case "js":
return "text/javascript";
case "woff":
return "application/font-woff";
case "woff2":
return "application/font-woff2";
case "ttf":
return "application/x-font-ttf";
case "eot":
return "application/vnd.ms-fontobject";
case "svg":
return "image/svg+xml";
}
type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
}
return type;
}