20

我正在编写一些代码以通过 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

我发现了这个类似的问题:Using java class 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;

我一直在为这个问题摸不着头脑,有什么建议吗?

4

4 回答 4

82

方法 1:urlString必须以https://而不是http://你能够将其转换为HttpsURLConnection.

方法 2: 如果您的 urlString 以 开头http://,则更HttpsURLConnection改为HttpURLConnection应该可以

于 2012-06-20T20:25:41.470 回答
1

我有同样的例外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");

现在它运行良好。

于 2018-07-25T06:57:28.637 回答
0

url.openConnection();libcore.net.http.HttpURLConnectionImpl当您将“conn”对象声明为 type 时,似乎正在返回一个类型的对象import javax.net.ssl.HttpsURLConnection;。您需要对导入和使用的对象进行分类。也许您错过了您所遵循的教程中的某些内容。

于 2012-06-20T20:25:57.490 回答
0

简单移除urlConnection.setDoOutput(true);

它会正常工作。

于 2015-11-04T04:06:25.363 回答