1、使用 HttpsURLConnection 的时候抛出的一个异常。
01-15 13:53:48.339 11539-12010/sf.app.mes E/AndroidRuntime: FATAL EXCEPTION: pool-1-thread-2
Process: sf.app.mes, PID: 11539
java.lang.ClassCastException: com.android.okhttp.internal.http.HttpURLConnectionImpl cannot be cast to javax.net.ssl.HttpsURLConnection
at sf.app.mes.http.HttpServer.post(HttpServer.java:120)
at sf.app.mes.http.thread.PostTask.run(PostTask.java:43)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
2、异常位置
URL url = new URL(urlString);
HttpsURLConnection https = (HttpsURLConnection) url.openConnection(); //异常发生在这里
3、问题原因
Your urlString
must begin with https://
and not http://
for you to be able to cast it to a HttpsURLConnection
.
你的 urlString 必须是 https://开头的才能够转换成 HttpsURLConnection。
4、解决
URL url = new URL(urlString);
if (url.getProtocol().toLowerCase().equals("https")) {
HttpsURLConnection https = (HttpsURLConnection) url.openConnection();
}
这样 Https 请求的异常就完美解决