java – 使用restTemplate时需要忽略证书

我正在向以下地址发送请求.证书无效,我想忽略它.我根据我在 1,2的研究写了以下代码,但是我无法完成.我正在使用Java 1.7,
https://api.stubhubsandBox.com/search/catalog/events/v3

private static final TrustManager[] UNQUESTIONING_TRUST_MANAGER = new TrustManager[]{
    new x509trustmanager() {
        public java.security.cert.X509Certificate[] getAcceptedissuers(){
            return null;
        }
        public void checkClientTrusted( X509Certificate[] certs,String authType ){}
        public void checkServerTrusted( X509Certificate[] certs,String authType ){}
        public void checkClientTrusted(
                java.security.cert.X509Certificate[] arg0,String arg1)
                throws CertificateException {
            // Todo Auto-generated method stub

        }
        public void checkServerTrusted(
                java.security.cert.X509Certificate[] arg0,String arg1)
                throws CertificateException {
            // Todo Auto-generated method stub

        }
    }
};

public static void main(String[] args) {
    TrustStrategy acceptingTrustStrategy = 

    SSLContext sslContext = org.apache.http.ssl.SSLContexts.custom()
            .loadTrustMaterial(null,acceptingTrustStrategy)
            .build();

    SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext);

    CloseableHttpClient httpClient = HttpClients.custom()
            .setSSLSocketFactory(csf)
            .build();

    HttpComponentsClientHttpRequestFactory requestFactory =
            new HttpComponentsClientHttpRequestFactory();

    requestFactory.setHttpClient(httpClient);

    RestTemplate restTemplate = new RestTemplate(requestFactory);
    String url = "https://api.stubhubsandBox.com/search/catalog/events/v3";
    RestTemplate rest = new RestTemplate();
    Map<String,String> mvm = new HashMap<String,String>();
    mvm.put("Authorization","Bearer TOKEEEEEEEN");
    Object object = rest.postForObject(url,null,Object.class,mvm);
    System.err.println("done");


}

解决方法

您可能已经注意到,Spring的RestTemplate将所有与HTTP(S)相关的内容委托给ClientHttpRequestFactory的底层实现.由于您使用基于HttpClient的实现,以下是有关如何为内部HttpClient实现此功能的几个有用的SO链接

> Ignoring SSL certificate in Apache HttpClient 4.3
> How to ignore SSL certificate errors in Apache HttpClient 4.0

显然,自4.4版以来,可以这样做:

CloseableHttpClient httpClient = HttpClients.custom().setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE).build();

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...