11

私はそのファイルを毎日更新するXMLファイルを解析しようとしています-私が遭遇した唯一の問題は、それらが独自の証明書(https:// ..。)を使用し、その特定のURLを使用できないことです。利用可能なhttp://...リンクはありますか。

URL url = new URL("https://...");
...
Document document = db.parse(url.openStream());

このコードは、テストの実行中に次の例外をスローします。

javax.net.ssl.SSLException:java.lang.RuntimeException:予期しないエラー:java.security.InvalidAlgorithmParameterException:trustAnchorsパラメーターは空でない必要があります

この種の接続やパーソナルサーバーを処理するためのさまざまなクラスの作成、および証明書をキーストアに追加してからそのキーストアをJavaプロジェクトに追加することに関するさまざまな提案を見てきましたが、私はそれができず、オンラインでXMLにアクセスするためのもう少し簡単な方法を探しています。

4

4 に答える 4

3

この奇妙なメッセージは、トラストストアが見つからなかったことを意味します。

XML BTWとは何の関係もありません。

于 2011-12-04T21:36:08.413 に答える
2

これで試すことができます:

String javaHomePath = System.getProperty("java.home");
String keystore = javaHomePath + "/lib/security/cacerts";
String storepass= "changeit";
String storetype= "JKS";

String[][] props = {
    { "javax.net.ssl.trustStore", keystore, },
    { "javax.net.ssl.keyStore", keystore, },
    { "javax.net.ssl.keyStorePassword", storepass, },
    { "javax.net.ssl.keyStoreType", storetype, },
};
for (int i = 0; i < props.length; i++) {
    System.getProperties().setProperty(props[i][0], props[i][1]);
}
// Now you can proceed to connect to call the webservice.
// SSL will be used automatically if the service endpoint url 
// starts with <a href="https://." target="_blank"         rel="nofollow">https://.</a>
// The server will send its certificate signed by verisign and 
// client will trust and authenticate the server as it recognizes 
// verisign as one trusted root.
于 2015-12-30T19:16:24.877 に答える