2012-06-20 4 views
14

HTTPS를 통해 장치에서 클라우드로 파일을 업로드하는 코드를 작성 중입니다.java.lang.ClassCastException : libcore.net.http.HttpURLConnectionImpl을 javax.net.ssl.HttpsURLConnection에 캐스팅 할 수 없음

관련 조각 :

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를,하지만 난 태양 패키지에서 아무것도 가져 있지 않다.

내 수입 :

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; 

나는 지금 잠시 동안이 일에 대해 어떤 제안을 내 머리를 긁적 있었어요?

+0

'HttpURLConnection'이므로'HttpsURLConnection'으로 캐스트 할 수 없습니다. 이는 연결된 질문과 동일합니다. urlString이 http : //로 시작하고 HttpURLConnection을 변경하면 HttpURLConnection이 오류를 해결하면 또 다른 잘못된 클래스 –

답변

63

urlStringHttpsURLConnection으로 전송하려면 https://으로 시작해야하며 http://이 아니어야합니다.

+1

을 사용합니다. –

+0

@ MatiasElorriaga- 귀하의 의견은 답변에서 더 유용합니다 ... 감사합니다. – offset

+0

잘 못된 URL에 java.net.HttpURLConnection을 사용했지만 Google은 플레이 스토어에 애플리케이션을 게시하는 동안 HttpURLConnection 구현을 수락하지 않습니다. Play 스토어의 경고 메시지 - "귀하의 앱이 HostnameVerifier 인터페이스의 안전하지 않은 구현을 사용 중입니다."해결책을 제공해주십시오. –

0

url.openConnection();은 "conn"개체가 import javax.net.ssl.HttpsURLConnection; 인 것으로 선언 한 동안 libcore.net.http.HttpURLConnectionImpl 유형의 개체를 반환하는 것처럼 보입니다. 가져 오기 및 사용 된 개체를 정렬해야합니다. 어쩌면 당신이 따라 왔던 튜토리얼에서 뭔가를 놓쳤을 수도 있습니다.

0

간단한 제거 urlConnection.setDoOutput(true);

그것을 잘 작동합니다.