2013-01-11 2 views
2

서버에서 데이터를 가져 오기 위해 Android 앱이 HTTP URL을 참조하고 있습니다. 2 일 전까지 제대로 작동했지만 갑자기 우리의 코드 나 서버에서 아무런 변화가 일어나지 않고 "sslpeerunverifiedexception: no peer certificate" exception이되었습니다. 코드는 매우 간단합니다.DefaultHttpClient가 HTTP 요청에서 ssl 예외를받습니다.

HttpParams httpParameters = new BasicHttpParams(); 
HttpConnectionParams.setConnectionTimeout(httpParameters, 12000); 
HttpConnectionParams.setSoTimeout(httpParameters, 12000); 
HttpClient client = new DefaultHttpClient(httpParameters); 
HttpGet request = new HttpGet("http://site.com"); 
HttpResponse httpResponse = client.execute(request); 
+0

logcat 세부 정보를 제공하십시오. – URAndroid

+0

1) URL이 http 또는 https입니까? 2) 로컬 호스트 또는 라이브 URL? –

+0

URL이 https로 변경되었습니다.이 경우 피어 인증서를 추가하고 호스트 이름 확인 프로그램을 설정해야합니다. –

답변

0

액세스하려는 서버가 자체 서명 된 SSL 인증서를 사용하고있는 것 같습니다.

권장되지는 않지만 (MiM 공격 일 수 있음)이 점을 무시할 수 있습니다. 자세한 내용은이 게시물을 참조하십시오. Self-signed SSL acceptance on Android

1

코드에 아래 기능을 추가하십시오.

public HttpClient getNewHttpClient() throws SocketException, UnknownHostException { 
    try { 
     KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); 
     trustStore.load(null, null); 

     SSLSocketFactory sf = new MySSLSocketFactory(trustStore); 
     sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); 

     HttpParams params = new BasicHttpParams(); 
     HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); 
     HttpProtocolParams.setContentCharset(params, HTTP.UTF_8); 

     SchemeRegistry registry = new SchemeRegistry(); 
     registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); 
     registry.register(new Scheme("https", sf, 443)); 

     ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry); 
     return new DefaultHttpClient(ccm, params); 
    } catch (Exception e) { 
     return new DefaultHttpClient(); 
    } 
} 

그리고 위의 호출 기능을 위해 아래 코드를 사용하십시오.

HttpClient httpclient = getNewHttpClient(); 
+0

처럼 작동하고 있습니다. SSL 예외를 무시하기 위해 이와 비슷한 코드를 시도했지만 "SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER"에 대한 일식 오류가 발생했습니다. 해결할 수 없거나 필드가 아닙니다. – kazemipouya

+0

@kazemipouya는 대상 sdk이며 min sdk? –

+0

분 및 목표 14, 16을 목표로하십시오. – kazemipouya

관련 문제