2016-11-22 106 views
7

我试图解析以下URL的HTML有效证书路径:如何解决jsoup错误:无法找到请求的目标

https://www.smuc.ac.kr/mbs/smuc/jsp/board/list.jsp?boardId=6993&id=smuc_040100000000

,我发现了以下错误:

sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
    at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387) 
    at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292) 
    at sun.security.validator.Validator.validate(Validator.java:260) 
    at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324) 
    at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229) 
    at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124) 
    at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1491) 
    ... 15 more 
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
    at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141) 
    at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126) 
    at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280) 
    at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382) 
    ... 21 more 


这是我的代码:

public class MainActivity extends AppCompatActivity { 
    private ListView listView; 
    private TextView textView; 
    public ArrayList<String> arrayList = new ArrayList<String>(); 
    private ArrayAdapter<String> arrayAdapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     listView = (ListView) findViewById(R.id.listView); 
     new Insert().execute(); 
     arrayAdapter = new ArrayAdapter<String>(MainActivity.this, R.layout.list_ok, R.id.text, arrayList); 
     } 

    class Insert extends AsyncTask<String, Void, String> { 
     @Override 
     protected String doInBackground(String... params) { 
      try { 
       // Connection.Response res = Jsoup.connect("https://www.smuc.ac.kr/mbs/smuc/index.jsp") 
       //   .method(Connection.Method.POST) 
       //   .execute(); 
       Document document = Jsoup.connect("https://www.smuc.ac.kr/mbs/smuc/jsp/board/list.jsp?boardId=6993&id=smuc_040100000000").get(); 
       Elements elements = document.select(".tit"); 
       arrayList.clear(); 
       for (Element element : elements) { 
        arrayList.add(element.text()); 
       } 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      return null; 
     } 
     @Override 
     protected void onPostExecute(String result){ 
      listView.setAdapter(arrayAdapter); 
     } 

    } 

} 

回答

14

呦ü可以忽略TSL验证,设置validateTLSCertificates(false)

Document document = Jsoup.connect("URL").timeout(10000).validateTLSCertificates(false).get(); 

由于阅读的页面还需要一段时间,增加超时timeout(10000)

+0

非常感谢你帮助我! @ flavio.donze –

+0

当然)@ flavio.donze –

相关问题