java.lang.ClassCastException: libcore.net.http.HttpURLConnectionImpl 不能被 cast to javax.net.ssl.HttpsURLConnection

2022-09-02 04:57:25

我正在编写一些代码,通过HTTPS将文件从设备上传到云端。

相关片段:

HttpsURLConnection conn = null; 
URL url = new URL(urlstring);
conn = (HttpsURLConnection) url.openConnection(); // exception here.

但是演员阵容不会编译:

06-20 15:58:05.311: E/FNF(30286): java.lang.ClassCastException: libcore.net.http.HttpURLConnectionImpl cannot be cast to javax.net.ssl.HttpsURLConnection

我发现了类似的问题:使用java类HttpsURLConnection,但我没有从sun包中导入任何东西。

我的进口:

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;
import android.net.Uri;
import javax.net.ssl.HttpsURLConnection;
import android.util.Log;
import edu.mit.media.funf.storage.RemoteFileArchive;
import edu.mit.media.funf.util.LogUtil;

我已经挠头一段时间了,有什么建议吗?


答案 1

方法 1:您必须以 开头,而不是为了能够将其转换为 .urlStringhttps://http://HttpsURLConnection

方法 2: 如果你的 urlString 以 开头,更改为 应该工作http://HttpsURLConnectionHttpURLConnection


答案 2

我有同样的例外java.lang.ClassCastException: libcore.net.http.HttpURLConnectionImpl cannot be cast to javax.net.ssl.HttpsURLConnection

uri = new URL("http://www.google.com");
HttpsURLConnection connection = (HttpsURLConnection) uri.openConnection(); // Exception

我改变了

uri = new URL("http://www.google.com");

uri = new URL("https://www.google.com");

现在它工作得很好。


推荐