java调用ip直接访问https接口问题

阅读更多

@Test
	public void initData() {
		BufferedReader reader = null;
		InputStream is = null;
		try {
			URL url = new URL("https://xxx.xxx.xxx.xxx/api/xxx");
			HttpURLConnection connection = (HttpURLConnection) url.openConnection();
			connection.setRequestMethod("GET");
			connection.setRequestProperty("Content-Type", "application/xml;charset=utf-8;");
			connection.setRequestProperty("Authorization", "Basic xxxxxxxxxxxxxxxxxxxxxxxxx=");
			connection.connect();
			is = connection.getInputStream();
			reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
			StringBuilder buffer = new StringBuilder();
			String strRead = null;
			while ((strRead = reader.readLine()) != null) {
				buffer.append(strRead);
			}
			System.out.println(buffer);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			IOUtils.closeQuietly(reader);
			IOUtils.closeQuietly(is);
		}

	}






报错如下
javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names present
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)


网上查结果是不支持ip访问,必须用域名


于是修改hosts做本地解析
192.168.1.153 www.test.com
nginx 域名跳转
server {
        listen       80;
        server_name  www.test.com;
        location / {
    proxy_pass https://xxx.xxx.xxx.xxx;

}
}
大功告成

你可能感兴趣的:(java调用ip直接访问https接口问题)