annotate src/main/java/de/mpiwg/gazetteer/utils/HTTPUtils.java @ 14:be7787c36e58 default tip

new: nofity LGSercies for deleted files
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Mon, 02 Nov 2015 16:41:23 +0100
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1 package de.mpiwg.gazetteer.utils;
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3 import java.io.BufferedReader;
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4 import java.io.IOException;
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5 import java.io.InputStreamReader;
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6 import java.net.HttpURLConnection;
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7 import java.net.URL;
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9 import javax.net.ssl.HttpsURLConnection;
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10 import javax.net.ssl.SSLContext;
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11 import javax.net.ssl.SSLSocketFactory;
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12 import javax.net.ssl.TrustManager;
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13 import javax.net.ssl.X509TrustManager;
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
15 import java.security.KeyManagementException;
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
16 import java.security.NoSuchAlgorithmException;
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
17 import java.security.cert.X509Certificate;
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
18
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
19 public class HTTPUtils {
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
20
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
21 final static TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
22 @Override
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
23 public void checkClientTrusted( final X509Certificate[] chain, final String authType ) {
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
24 }
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
25 @Override
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
26 public void checkServerTrusted( final X509Certificate[] chain, final String authType ) {
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
27 }
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
28 @Override
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
29 public X509Certificate[] getAcceptedIssuers() {
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
30 return null;
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
31 }
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
32 } };
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
33
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
34
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
35
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
36
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
37 public static HttpStringResponse getStringResponse(String url) throws IOException, KeyManagementException, NoSuchAlgorithmException{
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
38 if(url.startsWith("https") || url.startsWith("HTTPS"))
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
39 return getHttpSSLStringResponse(url);
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
40 return getHttpStringResponse(url);
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
41 }
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
42
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
43 private static HttpStringResponse getHttpSSLStringResponse(String link) throws IOException, KeyManagementException, NoSuchAlgorithmException{
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
44
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
45 // Install the all-trusting trust manager
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
46 final SSLContext sslContext = SSLContext.getInstance( "SSL" );
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
47 sslContext.init( null, trustAllCerts, new java.security.SecureRandom() );
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
48 // Create an ssl socket factory with our all-trusting manager
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
49 final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
50
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
51 URL url = new URL(link);
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
52 HttpURLConnection httpConn = (HttpURLConnection)url.openConnection();
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
53
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
54 ( (HttpsURLConnection) httpConn ).setSSLSocketFactory( sslSocketFactory );
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
55
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
56
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
57 BufferedReader in = null;
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
58 if (httpConn.getResponseCode() >= 400) {
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
59 in = new BufferedReader(
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
60 new InputStreamReader(
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
61 httpConn.getErrorStream()));
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
62 } else {
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
63 in = new BufferedReader(
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
64 new InputStreamReader(
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
65 httpConn.getInputStream()));
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
66 }
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
67
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
68 String inputLine;
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
69 StringBuilder sb = new StringBuilder();
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
70 while ((inputLine = in.readLine()) != null)
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
71 sb.append(inputLine + "\n");
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
72 in.close();
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
73
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
74 return new HttpStringResponse(httpConn.getResponseCode(), sb.toString());
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
75 }
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
76
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
77 private static HttpStringResponse getHttpStringResponse(String link) throws IOException{
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
78
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
79 //System.out.println(url);
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
80
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
81 URL url = new URL(link);
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
82 HttpURLConnection httpConn = (HttpURLConnection)url.openConnection();
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
83
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
84 BufferedReader in = null;
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
85 if (httpConn.getResponseCode() >= 400) {
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
86 in = new BufferedReader(
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
87 new InputStreamReader(
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
88 httpConn.getErrorStream()));
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
89 } else {
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
90 in = new BufferedReader(
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
91 new InputStreamReader(
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
92 httpConn.getInputStream()));
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
93 }
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
94
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
95
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
96 String inputLine;
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
97 StringBuilder sb = new StringBuilder();
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
98 while ((inputLine = in.readLine()) != null)
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
99 sb.append(inputLine + "\n");
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
100 in.close();
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
101
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
102 return new HttpStringResponse(httpConn.getResponseCode(), sb.toString());
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
103 }
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
104
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
105 public static class HttpStringResponse{
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
106 public int code;
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
107 public String content;
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
108 public HttpStringResponse(int code, String content){
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
109 this.code = code;
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
110 this.content = content;
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
111 }
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
112 }
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
113
be7787c36e58 new: nofity LGSercies for deleted files
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
114 }