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下如图
centos下如图
希望有人能帮我解决下。
检查一下阿里云的centos网络,访问外网是否是通的。