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;
私はしばらくの間これについて頭を悩ませてきました、何か提案はありますか?
方法1:urlString
にキャストできるようにするにはHttpsURLConnection
をhttps://
ではなくhttp://
で始める必要があります。
方法2: urlStringがhttp://
で始まる場合、HttpsURLConnection
をHttpURLConnection
に変更すると機能するはずです
同じ例外がありました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");
今では完全に機能しています。
単純な削除urlConnection.setDoOutput(true);
それはうまくいくでしょう。
url.openConnection();
は、「conn」オブジェクトをタイプlibcore.net.http.HttpURLConnectionImpl
として宣言しているときに、タイプimport javax.net.ssl.HttpsURLConnection;
のオブジェクトを返しているようです。インポートと使用済みオブジェクトを並べ替える必要があります。たぶん、あなたがフォローしていたチュートリアルで何かを見逃したのでしょう。