web-dev-qa-db-ja.com

java.lang.ClassCastException:libcore.net.http.HttpURLConnectionImplをjavax.net.ssl.HttpsURLConnectionにキャストできません

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 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;

私はしばらくの間これについて頭を悩ませてきました、何か提案はありますか?

17
Teddy

方法1:urlStringにキャストできるようにするにはHttpsURLConnectionhttps://ではなくhttp://で始める必要があります。

方法2: urlStringがhttp://で始まる場合、HttpsURLConnectionHttpURLConnectionに変更すると機能するはずです

72
cklab

同じ例外がありました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");

今では完全に機能しています。

1
anoopknr

単純な削除urlConnection.setDoOutput(true);

それはうまくいくでしょう。

0
Mediasoft

url.openConnection();は、「conn」オブジェクトをタイプlibcore.net.http.HttpURLConnectionImplとして宣言しているときに、タイプimport javax.net.ssl.HttpsURLConnection;のオブジェクトを返しているようです。インポートと使用済みオブジェクトを並べ替える必要があります。たぶん、あなたがフォローしていたチュートリアルで何かを見逃したのでしょう。

0
Morfic