I'm trying to intercept webview inner subsequent calls and passing cookies with request header.
I found a way to pass like below,
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
if (url.contains("/ccavenue_redirect_in") || url.contains("/ccavenue_cancel")) {
return loadRequestWithHeaders(url);
} else {
return super.shouldInterceptRequest(view, url);
}
}
private WebResourceResponse loadRequestWithHeaders(String url) {
try {
URL urlObject = new URL(url);
HttpURLConnection con = (HttpURLConnection) urlObject.openConnection();
con.setRequestMethod("POST");
CookieSyncManager.createInstance(PaymentWebviewActivity.this);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeSessionCookie();
cookieManager.setCookie(DOMAIN_NAME, AccountPreferenceUtils
.newInstance(PaymentWebviewActivity.this)
.getStringPrefs(AccountPreferenceUtils.PreferenceName.AUTH_COOKIE));
CookieSyncManager.getInstance().sync();
con.setRequestProperty("Cookie", AccountPreferenceUtils
.newInstance(PaymentWebviewActivity.this)
.getStringPrefs(AccountPreferenceUtils.PreferenceName.AUTH_COOKIE));
String[] types = parseContentHeader(con.getContentType());
return new WebResourceResponse(types[0], "UTF-8", con.getErrorStream());
} catch (Exception ex) {
return null;
}
}
I'm able to pass cookie, but that url has some encrypted body that is missing after interrupting the call.
Give some idea about how to fix it.