この Web サービスを呼び出すと、unknownhost 例外が発生することがあります
これは、Web サービスから情報を取得するために使用した方法です。
String response = null;
URL url;
HttpsURLConnection con = null;
try {
// Create a context that doesn't check certificates.
SSLContext ssl_ctx = SSLContext.getInstance("TLS");
TrustManager[ ] trust_mgr = get_trust_mgr();
ssl_ctx.init(null, // key manager
trust_mgr, // trust manager
new SecureRandom()); // random number generator
HttpsURLConnection.setDefaultSSLSocketFactory(ssl_ctx.getSocketFactory());
url = new URL("https://example.org/v1/user/login/");
HttpsURLConnection con = (HttpsURLConnection)url.openConnection();
// Guard against "bad hostname" errors during handshake.
con.setHostnameVerifier(new HostnameVerifier() {
public boolean verify(String host, SSLSession sess) {
if (host.equals("localhost")) return true;
else return false;
}
});
con.setRequestProperty("Content-Type", "application/json");
con.setDoInput(true);
con.setDoOutput(true);
con.setRequestMethod("PUT");
PrintStream ps = null;
ps = new PrintStream(con.getOutputStream());
ps.print(aLoginJS);
ps.close();
//dump all the content
StringBuffer string = null;
BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
string = new StringBuffer();
String inputLine = null;
while ((inputLine = br.readLine()) != null) {
string.append(inputLine);
}
response = string.toString();
br.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (con != null) {
con.disconnect();
}
}
return response;
「java.net.UnknownHostException: example.org」が表示されます。例外:
java.net.UnknownHostException: example.org
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(Unknown Source)
at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.connect(Unknown Source)
at sun.net.NetworkClient.doConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.New(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(Unknown Source)
ただし、この例外は常に発生するわけではなく、たまにしか発生しません。混乱している。
IPV4 と IPV6 を有効にして、Java バージョン 1.6 を実行しています。
両方が有効になっている場合、JVM はどの IP バージョンを使用しますか?
グーグルで調べてみると、JVM が IPV6 では正しく動作しないことがわかりました。
この例外は、IPV4 のみが有効な環境で発生しますか? 詳しく教えてください。
どんな助けでも大歓迎です。
前もって感謝します..