You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2015/01/15 17:28:34 UTC

svn commit: r1652161 - in /httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client: ClientCustomPublicSuffixList.java ClientCustomSSL.java

Author: olegk
Date: Thu Jan 15 16:28:34 2015
New Revision: 1652161

URL: http://svn.apache.org/r1652161
Log:
Added example demonstrating how to use a custom public suffix list

Added:
    httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientCustomPublicSuffixList.java
      - copied, changed from r1650758, httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientCustomSSL.java
Modified:
    httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientCustomSSL.java

Copied: httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientCustomPublicSuffixList.java (from r1650758, httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientCustomSSL.java)
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientCustomPublicSuffixList.java?p2=httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientCustomPublicSuffixList.java&p1=httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientCustomSSL.java&r1=1650758&r2=1652161&rev=1652161&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientCustomSSL.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientCustomPublicSuffixList.java Thu Jan 15 16:28:34 2015
@@ -26,46 +26,56 @@
  */
 package org.apache.http.examples.client;
 
-import java.io.File;
-
-import javax.net.ssl.SSLContext;
+import java.net.URL;
 
 import org.apache.http.HttpEntity;
+import org.apache.http.client.config.CookieSpecs;
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpGet;
-import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
+import org.apache.http.config.Lookup;
+import org.apache.http.config.RegistryBuilder;
+import org.apache.http.conn.ssl.DefaultHostnameVerifier;
+import org.apache.http.conn.util.PublicSuffixMatcher;
+import org.apache.http.conn.util.PublicSuffixMatcherLoader;
+import org.apache.http.cookie.CookieSpecProvider;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClients;
-import org.apache.http.ssl.SSLContexts;
+import org.apache.http.impl.cookie.RFC6265CookieSpecProvider;
 import org.apache.http.util.EntityUtils;
 
 /**
- * This example demonstrates how to create secure connections with a custom SSL
- * context.
+ * This example demonstrates how to use a custom public suffix list.
  */
-public class ClientCustomSSL {
+public class ClientCustomPublicSuffixList {
 
     public final static void main(String[] args) throws Exception {
-        // Trust own CA and all self-signed certs
-        SSLContext sslcontext = SSLContexts.custom()
-                .loadTrustMaterial(new File("my.keystore"), "nopassword".toCharArray(),
-                        new TrustSelfSignedStrategy())
+
+        // Use PublicSuffixMatcherLoader to load public suffix list from a file,
+        // resource or from an arbitrary URL
+        PublicSuffixMatcher publicSuffixMatcher = PublicSuffixMatcherLoader.load(
+                new URL("https://publicsuffix.org/list/effective_tld_names.dat"));
+
+        // Please use the publicsuffix.org URL to download the list no more than once per day !!!
+        // Please consider making a local copy !!!
+
+        DefaultHostnameVerifier hostnameVerifier = new DefaultHostnameVerifier(publicSuffixMatcher);
+
+        RFC6265CookieSpecProvider cookieSpecProvider = new RFC6265CookieSpecProvider(publicSuffixMatcher);
+        Lookup<CookieSpecProvider> cookieSpecRegistry = RegistryBuilder.<CookieSpecProvider>create()
+                .register(CookieSpecs.DEFAULT, cookieSpecProvider)
+                .register(CookieSpecs.STANDARD, cookieSpecProvider)
+                .register(CookieSpecs.STANDARD_STRICT, cookieSpecProvider)
                 .build();
-        // Allow TLSv1 protocol only
-        SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
-                sslcontext,
-                new String[] { "TLSv1" },
-                null,
-                SSLConnectionSocketFactory.getDefaultHostnameVerifier());
+
         CloseableHttpClient httpclient = HttpClients.custom()
-                .setSSLSocketFactory(sslsf)
+                .setSSLHostnameVerifier(hostnameVerifier)
+                .setDefaultCookieSpecRegistry(cookieSpecRegistry)
                 .build();
         try {
 
-            HttpGet httpget = new HttpGet("https://localhost/");
+            HttpGet httpget = new HttpGet("https://remotehost/");
 
-            System.out.println("executing request" + httpget.getRequestLine());
+            System.out.println("executing request " + httpget.getRequestLine());
 
             CloseableHttpResponse response = httpclient.execute(httpget);
             try {
@@ -73,9 +83,6 @@ public class ClientCustomSSL {
 
                 System.out.println("----------------------------------------");
                 System.out.println(response.getStatusLine());
-                if (entity != null) {
-                    System.out.println("Response content length: " + entity.getContentLength());
-                }
                 EntityUtils.consume(entity);
             } finally {
                 response.close();

Modified: httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientCustomSSL.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientCustomSSL.java?rev=1652161&r1=1652160&r2=1652161&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientCustomSSL.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientCustomSSL.java Thu Jan 15 16:28:34 2015
@@ -65,7 +65,7 @@ public class ClientCustomSSL {
 
             HttpGet httpget = new HttpGet("https://localhost/");
 
-            System.out.println("executing request" + httpget.getRequestLine());
+            System.out.println("executing request " + httpget.getRequestLine());
 
             CloseableHttpResponse response = httpclient.execute(httpget);
             try {
@@ -73,9 +73,6 @@ public class ClientCustomSSL {
 
                 System.out.println("----------------------------------------");
                 System.out.println(response.getStatusLine());
-                if (entity != null) {
-                    System.out.println("Response content length: " + entity.getContentLength());
-                }
                 EntityUtils.consume(entity);
             } finally {
                 response.close();