spring boot restTemplagte访问https 在window上能正常访问,阿里centos访问超时

spring boot restTemplagte访问https 在window上能正常访问,阿里centos访问超时

问题出现的环境背景及自己尝试过哪些方法

相关代码

restTemplate配置

@Bean
public RestTemplate restTemplate(OkHttpClient okHttpClient) {
    return new RestTemplate(new OkHttp3ClientHttpRequestFactory(okHttpClient));
}

@Bean
public OkHttpClient okHttpClient() {
    HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {
        @Override
        public boolean verify(String hostname, SSLSession session) {
            return true;
        }
    };

    OkHttpClient.Builder builder = new OkHttpClient.Builder();
    builder.connectTimeout(30, TimeUnit.SECONDS)
            .readTimeout(30, TimeUnit.SECONDS)
            .writeTimeout(30, TimeUnit.SECONDS)
            .retryOnConnectionFailure(true)
            .sslSocketFactory(getTrustedSSLSocketFactory())
            .hostnameVerifier(DO_NOT_VERIFY);

    return builder.build();
}

TrustManager[] trustAllCerts = new TrustManager[]{
        new X509TrustManager() {
            @Override
            public X509Certificate[] getAcceptedIssuers() {
                X509Certificate[] x509Certificates = new X509Certificate[0];
                return x509Certificates;
            }

            @Override
            public void checkClientTrusted(
                    X509Certificate[] certs, String authType) {
            }

            @Override
            public void checkServerTrusted(
                    X509Certificate[] certs, String authType) {
            }
        }
};

private SSLSocketFactory getTrustedSSLSocketFactory() {
    try {
        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustAllCerts, new java.security.SecureRandom());
        return sc.getSocketFactory();
    } catch (KeyManagementException | NoSuchAlgorithmException e) {
        e.printStackTrace();
        return null;
    }
}

@Component
    public class Run implements CommandLineRunner{
        @Autowired
        private ObjectMapper objectMapper;

        @Autowired
        private RestTemplate restTemplate;
        @Override
        public void run(String... args) throws Exception {
            String currenty = "szhj_doge";
            String str = this.restTemplate.getForObject("https://www.xunibi.biz/trade/index_json/market/szhj_doge?t=" + Math.random(), String.class);
            JsonNode jsonNode = this.objectMapper.readTree(str);
            JsonNode menu = jsonNode.get("menu");
            JsonNode szhjDoge = menu.get(currenty);
            String price = szhjDoge.get("price").asText();
            System.out.println(price);
        }
    }

windows上执行能正常获取价格,但在阿里云的centos中却不能获取

windows下如图

clipboard.png

centos下如图

clipboard.png

希望有人能帮我解决下。

阅读 2.6k
1 个回答

检查一下阿里云的centos网络,访问外网是否是通的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题