2014-04-30 67 views
1

我有以下代码:Android 2.3的错误:不是CA证书,

HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); 
    conn.setConnectTimeout(60000); //set timeout to 60 seconds  
    conn.connect(); 

    InputStream input = new BufferedInputStream(url.openStream()); 
    OutputStream output = new FileOutputStream(filePath); 
    byte data[] = new byte[1024]; 
    long total = 0; 

    while ((count = input.read(data)) != -1) { 
     output.write(data, 0, count); 
    } 

    output.close(); 
    input.close(); 

我对下载文件的代码。而当我executin它,我得到这个错误IOException异常,我不能在任何网页上找到:

javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Not a CA certificate 

我测试它在Android 4.3和它的作品normaly但不是2.3。任何想法可能会出错。它在浏览器和iOS上也可以正常工作。我也检查http://www.sslshopper.com/和everythink正常工作证书

+0

这是一个已知的(旧的Android)错误:http://stackoverflow.com/questions/21183043/sslhandshakeexception-trust-anchor-for-certification-path-not-发现-Android-http http://stackoverflow.com/questions/21306336/android-2-3-x-javax-net-ssl-sslhandshakeexception-java-security-cert-certpathva – shkschneider

+0

我发现这个,但我不想要添加任何.crt文件。还有其他的走动吗? – ButterBeast

回答

0

我发现了完美的解决方案。而不是使用URLConection我用的HttpClient:

HttpClient httpclient = new DefaultHttpClient(); 
HttpGet httpget = new HttpGet(url.toString()); 
HttpResponse response = httpclient.execute(httpget); 
HttpEntity entity = response.getEntity();