android https - certificado de servidor autoassinado - exceção
Links referidos:
http://developer.android.com/training/articles/security-ssl.html#UnknownCa http://randomizedsort.blogspot.com/2010/09/step-to-step-guide-to-programming.html
Eu tenho o código a seguir para conectar ao servidor com certificado autoassinado (eu uso esteresponda para a parte do keystore):
try
{
final KeyStore ks = KeyStore.getInstance("BKS");
final InputStream inputStream = getApplicationContext().getResources().openRawResource(R.raw.certs);
ks.load(inputStream, getApplicationContext().getString(R.string.store_pass).toCharArray());
inputStream.close();
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(ks);
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, tmf.getTrustManagers(), new SecureRandom());
URL url = new URL("https://www.mywebsite.com/");
HttpsURLConnection urlConnection = (HttpsURLConnection)url.openConnection();
urlConnection.setSSLSocketFactory(context.getSocketFactory());
InputStream in = urlConnection.getInputStream();
}
catch(Exception e) {
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
// the toast appear empty (described in question)
}
Se eu usar o nome do meu site como:
http://www.mywebsite.com
então, na tentativa de captura ao redor, uma exceção é lançada:
com.android.okhttp.internal.http.HttpURLConnectionImpl
cannot be cast to javax.net.ssl.HttpsURLConnection
Se eu usar:
https://www.mywebsite.com
ainda recebo uma exceção, mas devido a algum motivo, o objeto Exception 'e' emcatch(Exception e)
tem uma mensagem vazia (não é nula), então não consigo descobrir a exceção.
Se eu tentar usar:
Log.d("TEST", e.getMessage());
então eu recebo:
java.lang.NullPointerException: println needs a message
Alguém pode apontar o que estou fazendo de errado?
Editar:
Aqui está a saída de e.printStackTrace ()
D/TEST﹕ e.printStackTrace() :
06-18 14:20:17.493 W/System.err﹕ android.os.NetworkOnMainThreadException
06-18 14:20:17.493 W/System.err﹕ at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1145)
06-18 14:20:17.493 W/System.err﹕ at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
06-18 14:20:17.493 W/System.err﹕ at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
06-18 14:20:17.493 W/System.err﹕ at java.net.InetAddress.getAllByName(InetAddress.java:214)
06-18 14:20:17.493 W/System.err﹕ at com.android.okhttp.internal.Dns$1.getAllByName(Dns.java:28)
06-18 14:20:17.493 W/System.err﹕ at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:216)
06-18 14:20:17.493 W/System.err﹕ at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:122)
06-18 14:20:17.493 W/System.err﹕ at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:292)
06-18 14:20:17.493 W/System.err﹕ at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
06-18 14:20:17.493 W/System.err﹕ at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
06-18 14:20:17.493 W/System.err﹕ at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
06-18 14:20:17.493 W/System.err﹕ at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296)
06-18 14:20:17.493 W/System.err﹕ at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:179)
06-18 14:20:17.493 W/System.err﹕ at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:246)
06-18 14:20:17.493 W/System.err﹕ at com.android.authmobile.app.TestActivity$1.onClick(TestActivity.java:90)
06-18 14:20:17.493 W/System.err﹕ at android.view.View.performClick(View.java:4438)
06-18 14:20:17.497 W/System.err﹕ at android.view.View$PerformClick.run(View.java:18422)
06-18 14:20:17.497 W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:733)
06-18 14:20:17.497 W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:95)
06-18 14:20:17.497 W/System.err﹕ at android.os.Looper.loop(Looper.java:136)
06-18 14:20:17.497 W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5017)
06-18 14:20:17.497 W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
06-18 14:20:17.497 W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:515)
06-18 14:20:17.497 W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
06-18 14:20:17.497 W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
06-18 14:20:17.497 W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)