鍍金池/ 問答/Java/ spring boot restTemplagte訪問https 在window

spring boot restTemplagte訪問https 在window上能正常訪問,阿里centos訪問超時(shí)

spring boot restTemplagte訪問https 在window上能正常訪問,阿里centos訪問超時(shí)

問題出現(xiàn)的環(huán)境背景及自己嘗試過哪些方法

相關(guān)代碼

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上執(zhí)行能正常獲取價(jià)格,但在阿里云的centos中卻不能獲取

windows下如圖

clipboard.png

centos下如圖

clipboard.png

希望有人能幫我解決下。

回答
編輯回答
萌小萌

檢查一下阿里云的centos網(wǎng)絡(luò),訪問外網(wǎng)是否是通的。

2018年4月25日 21:52