Android e PhoneGap: richieste AJAX su https con certificati self signed
A quanto pare, su android si verifica lo stesso problema riscontrato su iOS, che non permette le richieste ajax su https con certificati self signed.
La soluzione su android è un po' più macchinosa di quella su iOs ma ugualmente risolutiva.
Per prima cosa, realizzare una nuova classe:
In seguito, modificare in questo modo la main activity:
La soluzione su android è un po' più macchinosa di quella su iOs ma ugualmente risolutiva.
Per prima cosa, realizzare una nuova classe:
import org.apache.cordova.CordovaWebViewClient;che estende la classe CordovaWebViewClient e riscrive il metodo onReceivedSslError, forzando l'esecuzione della richiesta con handler.proceed()
import org.apache.cordova.DroidGap;
import android.net.http.SslError;
import android.webkit.SslErrorHandler;
import android.webkit.WebView;
public class SSLAcceptingWebViewClient extends CordovaWebViewClient {
public SSLAcceptingWebViewClient(DroidGap ctx) {
super(ctx);
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed();
}
}
In seguito, modificare in questo modo la main activity:
public class MyActivity extends DroidGap {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.init();
CordovaWebViewClient webViewClient = new SSLAcceptingWebViewClient(this);
webViewClient.setWebView(this.appView);
this.appView.setWebViewClient(webViewClient);
super.loadUrl(Config.getStartUrl());
}
}