2016-11-22 7 views
7

Я пытаюсь разобрать HTML следующий URL:как разрешить 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

Yo и может игнорировать проверку TSL, набор validateTLSCertificates(false):

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

Поскольку чтение страницы также занимает некоторое время, увеличить время ожидания timeout(10000).

+0

Спасибо, что это мне помогло! @ flavio.donze –

+0

уверен) @ flavio.donze –