java.lang.ClassCastException:libcore.net.http.HttpURLConnectionImpl无法强制转换为javax.net.ssl.HttpsURLConnection

时间:2012-06-20 20:21:59

标签: java android http https urlconnection

我正在编写一些代码,通过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 个答案:

答案 0 :(得分:70)

您的urlString必须以https://而不是http://开头才能将其投放到HttpsURLConnection

答案 1 :(得分: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");

现在它运行良好。

答案 2 :(得分:0)

当您将“conn”对象声明为url.openConnection();类型时,

libcore.net.http.HttpURLConnectionImpl似乎返回了import javax.net.ssl.HttpsURLConnection;类型的对象。您需要对导入和使用的对象进行排序。也许你错过了你所关注的教程中的内容。

答案 3 :(得分:0)

简单删除urlConnection.setDoOutput(true);

它会正常工作。