В моем приложении для Android мне нужно отобразить стороннюю регистрационную форму внутри WebView
. К сожалению, мне также необходимо поддерживать версии Android < 4.3, где вы получаете ошибку установления связи SSL при подключении к веб-сайту. Тем не менее, я смог создавать прямые запросы на Android 4.1+ с помощью специального контекста SSL, который явно включен TLS 1.1, но я не могу передать этот контекст SSL в свой WebView
. Я пытался сделать нестандартную WebViewClient
TLS 1.1, 1.2 в WebView для android <= 4.3
private WebViewClient webViewClient = new WebViewClient() {
@Override
public void onPageFinished(WebView webView, String url) {
if (presenter != null) {
presenter.onLoadFinished();
}
}
@Override
public void onReceivedError(WebView webView,
WebResourceRequest request,
WebResourceError error) {
if (presenter != null) {
presenter.onLoadError();
}
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error){
handler.proceed();
}
@Override
public boolean shouldOverrideUrlLoading(WebView webView, String url) {
Request request = new Request.Builder().url(url).build();
final Handler handler = new Handler(mContext.getMainLooper());
//mOkHttpClient is an OkHttpClient with my custom SSLContext which has TLS 1.1 and TLS 1.2 enabled
mOkHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, final okhttp3.Response response) throws IOException {
handler.post(new Runnable() {
@Override
public void run() {
try {
webView.loadDataWithBaseURL(
null, response.body().string(), "text/html", "utf-8", null);
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
});
}
};
Но это не сработало, так как shouldOverrideUrlLoading
не вызывается запросов POST.
Есть ли способ сделать эту работу (возможно, некоторая альтернатива WebView
)? Любая помощь приветствуется.
Спасибо, он работает очень хорошо. – satorikomeiji
https://crosswalk-project.org/documentation/android/embedding_crosswalk.html –