how to make Unirest(java) ignore certificate error

后端 未结 5 1799
无人及你
无人及你 2021-02-04 07:42

I am using Unirest (java version) to make GET and POST request.But I encounter a problem when accessing SSL encrypted site , since my program is behind a corporate network and t

5条回答
  •  悲&欢浪女
    2021-02-04 08:00

    the certificate error solution is a combination from a few places

    • https://github.com/Mashape/unirest-java/issues/70, where i started.
    • http://literatejava.com/networks/ignore-ssl-certificate-errors-apache-httpclient-4-4/ very good explanation.
    • http://www.baeldung.com/httpclient-ssl, solution for all versions.

    and a relatively complete example.

    import java.security.KeyManagementException;
    import java.security.KeyStoreException;
    import java.security.NoSuchAlgorithmException;
    
    import javax.net.ssl.SSLContext;
    import javax.security.cert.CertificateException;
    import javax.security.cert.X509Certificate;
    
    import org.apache.http.client.HttpClient;
    import org.apache.http.conn.ssl.NoopHostnameVerifier;
    import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.ssl.SSLContextBuilder;
    
    import com.mashape.unirest.http.HttpResponse;
    import com.mashape.unirest.http.JsonNode;
    import com.mashape.unirest.http.Unirest;
    import com.mashape.unirest.http.exceptions.UnirestException;
    
    public class XXX {
    
        private static HttpClient unsafeHttpClient;
    
        static {
            try {
                SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustSelfSignedStrategy() {
                    public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                        return true;
                    }
                }).build();
    
                unsafeHttpClient = HttpClients.custom().setSSLContext(sslContext)
                        .setSSLHostnameVerifier(new NoopHostnameVerifier()).build();
    
            } catch (KeyManagementException | NoSuchAlgorithmException | KeyStoreException e) {
                e.printStackTrace();
            }
        }
    
        public static HttpClient getClient() {
            return unsafeHttpClient;
        }
    
        public static void main(String[] args) {
    
            try {
                HttpClient creepyClient = RestUnirestClient.getClient();
                Unirest.setHttpClient(creepyClient);
    
                HttpResponse response = Unirest.get("https://httpbin.org/get?show_env=1").asJson();
                System.out.println(response.getBody().toString());
    
            } catch (UnirestException e) {
                e.printStackTrace();
            }
        }
    }
    

提交回复
热议问题