Java クライアントを使用して REST サービスを利用しようとすると、java.net.ConnectException: Connection timed out
例外が発生します。
Web クライアント (chrome、firefox) を使用している場合、正しい答えを取得できます。
Windows ファイアウォールに Java の例外を追加しましたが、これで問題は解決しません。私の接続は保護されています。
SSLContext sslContext = SSLContext.getInstance("TLS");
X509TrustManager[] xtmArray = new X509TrustManager[] { new OwnTrustManager() };
sslContext.init(null, xtmArray, new java.security.SecureRandom());
if (sslContext != null) {
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext
.getSocketFactory());
}
HttpsURLConnection
.setDefaultHostnameVerifier(new ISAHostnameVerifier());
public class OwnTrustManager implements X509TrustManager{
public void checkClientTrusted(X509Certificate[] chain, String authType) {
}
public void checkServerTrusted(X509Certificate[] chain, String authType) {
}
public X509Certificate[] getAcceptedIssuers() {
return null;
}
}
public class ISAHostnameVerifier implements HostnameVerifier{
public boolean verify(String hostname, SSLSession session) {
return true;
}
}
ビジネスロジックは次のとおりです。
URL url = null;
try {
url = new URL("https://16.9.1.82/xxxx/v23/rest");
HttpsURLConnection con = (HttpsURLConnection)url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Accept", "application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
con.setRequestProperty("Accept-Encoding", "gzip,deflate,sdch");
con.setRequestProperty("Cookie", "----");
con.setRequestProperty("Host", "16.9.1.82");
con.setRequestProperty("Authorization", "Basic U1BQQ19STTFASUJNLkNPTTptYXhhZG1pbg==");
con.connect();