List of usage examples for javax.net.ssl HttpsURLConnection setSSLSocketFactory
public void setSSLSocketFactory(SSLSocketFactory sf)
From source file:com.simiacryptus.util.Util.java
/** * Get input stream.//from w w w .ja v a 2 s. c o m * * @param url the url * @return the input stream * @throws NoSuchAlgorithmException the no such algorithm exception * @throws KeyManagementException the key management exception * @throws IOException the io exception */ public static InputStream get(@javax.annotation.Nonnull String url) throws NoSuchAlgorithmException, KeyManagementException, IOException { @javax.annotation.Nonnull final TrustManager[] trustManagers = { new X509TrustManager() { @Override public void checkClientTrusted(final X509Certificate[] certs, final String authType) { } @Override public void checkServerTrusted(final X509Certificate[] certs, final String authType) { } @javax.annotation.Nonnull @Override public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; } } }; @javax.annotation.Nonnull final SSLContext ctx = SSLContext.getInstance("TLS"); ctx.init(null, trustManagers, null); final SSLSocketFactory sslFactory = ctx.getSocketFactory(); final URLConnection urlConnection = new URL(url).openConnection(); if (urlConnection instanceof HttpsURLConnection) { @javax.annotation.Nonnull final HttpsURLConnection conn = (HttpsURLConnection) urlConnection; conn.setSSLSocketFactory(sslFactory); conn.setRequestMethod("GET"); } return urlConnection.getInputStream(); }
From source file:com.dh.perfectoffer.event.framework.net.network.NetworkConnectionImpl.java
/** * Call the webservice using the given parameters to construct the request * and return the result.//from www .j a va 2 s . c o m * * @param context * The context to use for this operation. Used to generate the * user agent if needed. * @param urlValue * The webservice URL. * @param method * The request method to use. * @param parameterList * The parameters to add to the request. * @param headerMap * The headers to add to the request. * @param isGzipEnabled * Whether the request will use gzip compression if available on * the server. * @param userAgent * The user agent to set in the request. If null, a default * Android one will be created. * @param postText * The POSTDATA text to add in the request. * @param credentials * The credentials to use for authentication. * @param isSslValidationEnabled * Whether the request will validate the SSL certificates. * @return The result of the webservice call. */ public static ConnectionResult execute(Context context, String urlValue, Method method, ArrayList<BasicNameValuePair> parameterList, HashMap<String, String> headerMap, boolean isGzipEnabled, String userAgent, String postText, UsernamePasswordCredentials credentials, boolean isSslValidationEnabled, String contentType, List<byte[]> fileByteDates, List<String> fileMimeTypes, int httpErrorResCodeFilte, boolean isMulFiles) throws ConnectionException { HttpURLConnection connection = null; try { // Prepare the request information if (userAgent == null) { userAgent = UserAgentUtils.get(context); } if (headerMap == null) { headerMap = new HashMap<String, String>(); } headerMap.put(HTTP.USER_AGENT, userAgent); if (isGzipEnabled) { headerMap.put(ACCEPT_ENCODING_HEADER, "gzip"); } headerMap.put(ACCEPT_CHARSET_HEADER, UTF8_CHARSET); if (credentials != null) { headerMap.put(AUTHORIZATION_HEADER, createAuthenticationHeader(credentials)); } StringBuilder paramBuilder = new StringBuilder(); if (parameterList != null && !parameterList.isEmpty()) { for (int i = 0, size = parameterList.size(); i < size; i++) { BasicNameValuePair parameter = parameterList.get(i); String name = parameter.getName(); String value = parameter.getValue(); if (TextUtils.isEmpty(name)) { // Empty parameter name. Check the next one. continue; } if (value == null) { value = ""; } paramBuilder.append(URLEncoder.encode(name, UTF8_CHARSET)); paramBuilder.append("="); paramBuilder.append(URLEncoder.encode(value, UTF8_CHARSET)); paramBuilder.append("&"); } } // ? ByteArrayOutputStream bos = new ByteArrayOutputStream(); // Create the connection object URL url = null; String outputText = null; switch (method) { case GET: case DELETE: String fullUrlValue = urlValue; if (paramBuilder.length() > 0) { fullUrlValue += "?" + paramBuilder.toString(); } url = new URL(fullUrlValue); connection = HttpUrlConnectionHelper.openUrlConnection(url); break; case PUT: case POST: url = new URL(urlValue); connection = HttpUrlConnectionHelper.openUrlConnection(url); connection.setDoOutput(true); if (paramBuilder.length() > 0 && NetworkConnection.CT_DEFALUT.equals(contentType)) { // form // ? // headerMap.put(HTTP.CONTENT_TYPE, // "application/x-www-form-urlencoded"); outputText = paramBuilder.toString(); headerMap.put(HTTP.CONTENT_TYPE, contentType); headerMap.put(HTTP.CONTENT_LEN, String.valueOf(outputText.getBytes().length)); } else if (postText != null && (NetworkConnection.CT_JSON.equals(contentType) || NetworkConnection.CT_XML.equals(contentType))) { // body // ? // headerMap.put(HTTP.CONTENT_TYPE, "application/json"); // //add ?json??? headerMap.put(HTTP.CONTENT_TYPE, contentType); // add // ?json??? headerMap.put(HTTP.CONTENT_LEN, String.valueOf(postText.getBytes().length)); outputText = postText; // Log.e("newtewewerew", // "1111application/json------------------outputText222222:::"+outputText+"-------method::"+method+"----paramBuilder.length() :"+paramBuilder.length()+"----postText:"+postText // ); } else if (NetworkConnection.CT_MULTIPART.equals(contentType)) { // String[] Array = urlValue.split("/"); /*Boolean isFiles = false; if (Array[Array.length - 1].equals("clientRemarkPic")) { isFiles = true; }*/ if (null == fileByteDates || fileByteDates.size() <= 0) { throw new ConnectionException("file formdata no bytes data", NetworkConnection.EXCEPTION_CODE_FORMDATA_NOBYTEDATE); } headerMap.put(HTTP.CONTENT_TYPE, contentType + ";boundary=" + BOUNDARY); String bulidFormText = bulidFormText(parameterList); bos.write(bulidFormText.getBytes()); for (int i = 0; i < fileByteDates.size(); i++) { long currentTimeMillis = System.currentTimeMillis(); StringBuffer sb = new StringBuffer(""); sb.append(PREFIX).append(BOUNDARY).append(LINEND); // sb.append("Content-Type:application/octet-stream" + // LINEND); // sb.append("Content-Disposition: form-data; name=\""+nextInt+"\"; filename=\""+nextInt+".png\"").append(LINEND);; if (isMulFiles) sb.append("Content-Disposition: form-data; name=\"files\";filename=\"pic" + currentTimeMillis + ".png\"").append(LINEND); else sb.append("Content-Disposition: form-data; name=\"file\";filename=\"pic" + currentTimeMillis + ".png\"").append(LINEND); // sb.append("Content-Type:image/png" + LINEND); sb.append("Content-Type:" + fileMimeTypes.get(i) + LINEND); // sb.append("Content-Type:image/png" + LINEND); sb.append(LINEND); bos.write(sb.toString().getBytes()); bos.write(fileByteDates.get(i)); bos.write(LINEND.getBytes()); } byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND).getBytes(); bos.write(end_data); bos.flush(); headerMap.put(HTTP.CONTENT_LEN, bos.size() + ""); } // L.e("newtewewerew", // "2222------------------outputText222222:::"+outputText+"-------method::"+method+"----paramBuilder.length() :"+paramBuilder.length()+"----postText:"+postText // ); break; } // Set the request method connection.setRequestMethod(method.toString()); // If it's an HTTPS request and the SSL Validation is disabled if (url.getProtocol().equals("https") && !isSslValidationEnabled) { HttpsURLConnection httpsConnection = (HttpsURLConnection) connection; httpsConnection.setSSLSocketFactory(getAllHostsValidSocketFactory()); httpsConnection.setHostnameVerifier(getAllHostsValidVerifier()); } // Add the headers if (!headerMap.isEmpty()) { for (Entry<String, String> header : headerMap.entrySet()) { connection.addRequestProperty(header.getKey(), header.getValue()); } } // Set the connection and read timeout connection.setConnectTimeout(OPERATION_TIMEOUT); connection.setReadTimeout(OPERATION_TIMEOUT); // Set the outputStream content for POST and PUT requests if ((method == Method.POST || method == Method.PUT)) { OutputStream output = null; try { if (NetworkConnection.CT_MULTIPART.equals(contentType)) { output = connection.getOutputStream(); output.write(bos.toByteArray()); } else { if (null != outputText) { L.e("newtewewerew", method + "------------------outputText:::" + outputText); output = connection.getOutputStream(); output.write(outputText.getBytes()); } } } finally { if (output != null) { try { output.close(); } catch (IOException e) { // Already catching the first IOException so nothing // to do here. } } } } // Log the request if (L.canLog(Log.DEBUG)) { L.d(TAG, "Request url: " + urlValue); L.d(TAG, "Method: " + method.toString()); if (parameterList != null && !parameterList.isEmpty()) { L.d(TAG, "Parameters:"); for (int i = 0, size = parameterList.size(); i < size; i++) { BasicNameValuePair parameter = parameterList.get(i); String message = "- \"" + parameter.getName() + "\" = \"" + parameter.getValue() + "\""; L.d(TAG, message); } L.d(TAG, "Parameters String: \"" + paramBuilder.toString() + "\""); } if (postText != null) { L.d(TAG, "Post data: " + postText); } if (headerMap != null && !headerMap.isEmpty()) { L.d(TAG, "Headers:"); for (Entry<String, String> header : headerMap.entrySet()) { L.d(TAG, "- " + header.getKey() + " = " + header.getValue()); } } } String contentEncoding = connection.getHeaderField(HTTP.CONTENT_ENCODING); int responseCode = connection.getResponseCode(); boolean isGzip = contentEncoding != null && contentEncoding.equalsIgnoreCase("gzip"); L.d(TAG, "Response code: " + responseCode); if (responseCode == HttpStatus.SC_MOVED_PERMANENTLY) { String redirectionUrl = connection.getHeaderField(LOCATION_HEADER); throw new ConnectionException("New location : " + redirectionUrl, redirectionUrl); } InputStream errorStream = connection.getErrorStream(); if (errorStream != null) { String error = convertStreamToString(errorStream, isGzip); // L.e("responseCode:"+responseCode+" httpErrorResCodeFilte:"+httpErrorResCodeFilte+" responseCode==httpErrorResCodeFilte:"+(responseCode==httpErrorResCodeFilte)); if (responseCode == httpErrorResCodeFilte) { // 400???... logResBodyAndHeader(connection, error); return new ConnectionResult(connection.getHeaderFields(), error, responseCode); } else { throw new ConnectionException(error, responseCode); } } String body = convertStreamToString(connection.getInputStream(), isGzip); // ?? ? if (null != body && body.contains("\r")) { body = body.replace("\r", ""); } if (null != body && body.contains("\n")) { body = body.replace("\n", ""); } logResBodyAndHeader(connection, body); return new ConnectionResult(connection.getHeaderFields(), body, responseCode); } catch (IOException e) { L.e(TAG, "IOException", e); throw new ConnectionException(e); } catch (KeyManagementException e) { L.e(TAG, "KeyManagementException", e); throw new ConnectionException(e); } catch (NoSuchAlgorithmException e) { L.e(TAG, "NoSuchAlgorithmException", e); throw new ConnectionException(e); } finally { if (connection != null) { connection.disconnect(); } } }
From source file:org.rhq.plugins.www.util.WWWUtils.java
private static void disableCertificateVerification(HttpsURLConnection connection) { TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[] {}; }// w w w.j a v a2 s . com public void checkClientTrusted(X509Certificate[] certs, String authType) { return; } public void checkServerTrusted(X509Certificate[] certs, String authType) { return; } } }; try { SSLContext sslContext = SSLContext.getInstance("SSL"); sslContext.init(null, trustAllCerts, new java.security.SecureRandom()); connection.setSSLSocketFactory(sslContext.getSocketFactory()); connection.setHostnameVerifier(new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession sslSession) { return true; } }); } catch (Exception e) { Log log = LogFactory.getLog(WWWUtils.class); log.warn("Failed to disable certificate validation.", e); } }
From source file:com.jrummyapps.android.safetynet.SafetyNetHelper.java
/** * Validate the SafetyNet response using the Android Device Verification API. This API performs a validation check on * the JWS message returned from the SafetyNet service. * * <b>Important:</b> This use of the Android Device Verification API only validates that the provided JWS message was * received from the SafetyNet service. It <i>does not</i> verify that the payload data matches your original * compatibility check request.//from w ww .j a v a 2 s . c om * * @param jws * The output of {@link SafetyNetApi.AttestationResult#getJwsResult()}. * @param apiKey * The Android Device Verification API key * @return {@code true} if the provided JWS message was received from the SafetyNet service. * @throws SafetyNetError * if an error occurs while verifying the JSON Web Signature. */ public static boolean validate(@NonNull String jws, @NonNull String apiKey) throws SafetyNetError { try { URL verifyApiUrl = new URL(GOOGLE_VERIFICATION_URL + apiKey); TrustManagerFactory trustManagerFactory = TrustManagerFactory .getInstance(TrustManagerFactory.getDefaultAlgorithm()); trustManagerFactory.init((KeyStore) null); TrustManager[] defaultTrustManagers = trustManagerFactory.getTrustManagers(); TrustManager[] trustManagers = Arrays.copyOf(defaultTrustManagers, defaultTrustManagers.length + 1); trustManagers[defaultTrustManagers.length] = new GoogleApisTrustManager(); SSLContext sslContext = SSLContext.getInstance("TLS"); sslContext.init(null, trustManagers, null); HttpsURLConnection urlConnection = (HttpsURLConnection) verifyApiUrl.openConnection(); urlConnection.setSSLSocketFactory(sslContext.getSocketFactory()); urlConnection.setRequestMethod("POST"); urlConnection.setRequestProperty("Content-Type", "application/json"); JSONObject requestJson = new JSONObject(); requestJson.put("signedAttestation", jws); byte[] outputInBytes = requestJson.toString().getBytes("UTF-8"); OutputStream os = urlConnection.getOutputStream(); os.write(outputInBytes); os.close(); urlConnection.connect(); InputStream is = urlConnection.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); StringBuilder sb = new StringBuilder(); for (String line = reader.readLine(), nl = ""; line != null; line = reader.readLine(), nl = "\n") { sb.append(nl).append(line); } return new JSONObject(sb.toString()).getBoolean("isValidSignature"); } catch (Exception e) { throw new SafetyNetError(e); } }
From source file:jetbrains.buildServer.vmgr.agent.Utils.java
private static void configureAllowAll(HttpsURLConnection connection) { connection.setHostnameVerifier(new HostnameVerifier() { @Override// w ww . j a v a 2s. c o m public boolean verify(String s, SSLSession sslSession) { return true; } }); try { connection.setSSLSocketFactory(getSocketFactory()); } catch (Exception e) { throw new RuntimeException("XTrust Failed to set SSL Socket factory", e); } }
From source file:learn.encryption.ssl.SSLContext_Https.java
/** * Post??web??,?utf-8// w w w . j a v a 2 s. c o m * * ?UTF8 * * @param actionUrl * @param params * @param timeout * @return * @throws InvalidParameterException * @throws NetWorkException * @throws IOException * @throws IllegalAccessException * @throws IllegalArgumentException * @throws Exception */ public static String post(String url, Map<String, String> params, int timeout) throws IOException, IllegalArgumentException, IllegalAccessException { if (url == null || url.equals("")) throw new IllegalArgumentException("url "); if (params == null) throw new IllegalArgumentException("params ?"); if (url.indexOf('?') > 0) { url = url + "&token=A04BCQULBDgEFB1BQk5cU1NRU19cQU1WWkBPCg0FAwIkCVpZWl1UVExTXFRDSFZSSVlPSkADGhw7HAoQEQMDRFhAWUJYV0hBVE4JAxQLCQlPQ1oiNig/KSsmSEBPGBsAFxkDEkBYSF1eTk1USVldU1FQSEBPFh0OMQhPXEBQSBE="; } else { url = url + "?token=A04BCQULBDgEFB1BQk5cU1NRU19cQU1WWkBPCg0FAwIkCVpZWl1UVExTXFRDSFZSSVlPSkADGhw7HAoQEQMDRFhAWUJYV0hBVE4JAxQLCQlPQ1oiNig/KSsmSEBPGBsAFxkDEkBYSF1eTk1USVldU1FQSEBPFh0OMQhPXEBQSBE="; } String sb2 = ""; String BOUNDARY = java.util.UUID.randomUUID().toString(); String PREFIX = "--", LINEND = "\r\n"; String MULTIPART_FROM_DATA = "multipart/form-data"; String CHARSET = "UTF-8"; // try { URL uri = new URL(url); HttpsURLConnection conn = (HttpsURLConnection) uri.openConnection(); // conn.setConnectTimeout(timeout); conn.setReadTimeout(timeout); conn.setDoInput(true); conn.setDoOutput(true); conn.setUseCaches(false); conn.setRequestMethod("POST"); conn.setRequestProperty("connection", "keep-alive"); conn.setRequestProperty("Charsert", "UTF-8"); conn.setRequestProperty("Content-Type", MULTIPART_FROM_DATA + ";boundary=" + BOUNDARY); SSLSocketFactory ssf = sslContext.getSocketFactory(); conn.setSSLSocketFactory(ssf); conn.setHostnameVerifier(HOSTNAME_VERIFIER); StringBuilder sb = new StringBuilder(); for (Map.Entry<String, String> entry : params.entrySet()) { sb.append(PREFIX); sb.append(BOUNDARY); sb.append(LINEND); sb.append("Content-Disposition: form-data; name=\"" + entry.getKey() + "\"" + LINEND); sb.append("Content-Type: text/plain; charset=" + CHARSET + LINEND); sb.append("Content-Transfer-Encoding: 8bit" + LINEND); sb.append(LINEND); sb.append(entry.getValue()); sb.append(LINEND); } DataOutputStream outStream = new DataOutputStream(conn.getOutputStream()); outStream.write(sb.toString().getBytes("UTF-8")); InputStream in = null; byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND).getBytes(); outStream.write(end_data); outStream.flush(); int res = conn.getResponseCode(); if (res == 200) { in = conn.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(in, "UTF-8")); String line = ""; for (line = br.readLine(); line != null; line = br.readLine()) { sb2 = sb2 + line; } } outStream.close(); conn.disconnect(); return sb2; }
From source file:com.eucalyptus.crypto.util.SslSetup.java
/** * Configure an unconnected HttpsURLConnection for trust. *///from w w w. java2s . c o m public static URLConnection configureHttpsUrlConnection(final URLConnection urlConnection) { if (urlConnection instanceof HttpsURLConnection) { final HttpsURLConnection httpsURLConnection = (HttpsURLConnection) urlConnection; httpsURLConnection .setHostnameVerifier(Objects.firstNonNull(USER_SSL_ENABLE_HOSTNAME_VERIFICATION, Boolean.TRUE) ? new BrowserCompatHostnameVerifier() : new AllowAllHostnameVerifier()); httpsURLConnection.setSSLSocketFactory(UserSSLSocketFactory.get()); } return urlConnection; }
From source file:de.zib.gndms.common.kit.security.CustomSSLContextRequestFactory.java
protected void prepareConnection(HttpURLConnection connection, String httpMethod) throws IOException { super.prepareConnection(connection, httpMethod); if (connection instanceof HttpsURLConnection) { HttpsURLConnection httpscon = (HttpsURLConnection) connection; httpscon.setSSLSocketFactory(sslContext.getSocketFactory()); }/*from w w w.j a v a2 s . c o m*/ }
From source file:com.longtime.ajy.support.weixin.HttpsKit.java
/** * ??Get/*from w w w. j av a 2 s. c o m*/ * * @param url * @return * @throws NoSuchProviderException * @throws NoSuchAlgorithmException * @throws IOException * @throws KeyManagementException */ public static String get(String url) {//throws NoSuchAlgorithmException, NoSuchProviderException, IOException, KeyManagementException { InputStream in = null; HttpsURLConnection http = null; try { StringBuffer bufferRes = null; TrustManager[] tm = { new MyX509TrustManager() }; SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE"); sslContext.init(null, tm, new java.security.SecureRandom()); // SSLContextSSLSocketFactory SSLSocketFactory ssf = sslContext.getSocketFactory(); URL urlGet = new URL(url); http = (HttpsURLConnection) urlGet.openConnection(); // http.setConnectTimeout(TIME_OUT_CONNECT); // ? --?? http.setReadTimeout(TIME_OUT_READ); http.setRequestMethod("GET"); http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); http.setSSLSocketFactory(ssf); http.setDoOutput(true); http.setDoInput(true); http.connect(); in = http.getInputStream(); BufferedReader read = new BufferedReader(new InputStreamReader(in, DEFAULT_CHARSET)); String valueString = null; bufferRes = new StringBuffer(); while ((valueString = read.readLine()) != null) { bufferRes.append(valueString); } return bufferRes.toString(); } catch (Exception e) { logger.error(String.format("HTTP GET url=[%s] due to fail.", url), e); } finally { if (null != in) { try { in.close(); } catch (IOException e) { logger.error(String.format("HTTP GET url=[%s] close inputstream due to fail.", url), e); } } if (http != null) { // http.disconnect(); } } return StringUtils.EMPTY; }
From source file:com.longtime.ajy.support.weixin.HttpsKit.java
/** * ??Post//from w ww .j av a 2 s . com * * @param url * @param params * @return * @throws IOException * @throws NoSuchProviderException * @throws NoSuchAlgorithmException * @throws KeyManagementException */ public static String post(String url, String params) {//throws IOException, NoSuchAlgorithmException, NoSuchProviderException, KeyManagementException { OutputStream out = null; InputStream in = null; HttpsURLConnection http = null; try { StringBuffer bufferRes = null; TrustManager[] tm = { new MyX509TrustManager() }; SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE"); sslContext.init(null, tm, new java.security.SecureRandom()); // SSLContextSSLSocketFactory SSLSocketFactory ssf = sslContext.getSocketFactory(); URL urlGet = new URL(url); http = (HttpsURLConnection) urlGet.openConnection(); // http.setConnectTimeout(TIME_OUT_CONNECT); // ? --?? http.setReadTimeout(TIME_OUT_READ); http.setRequestMethod("POST"); http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); http.setSSLSocketFactory(ssf); http.setDoOutput(true); http.setDoInput(true); http.connect(); out = http.getOutputStream(); out.write(params.getBytes("UTF-8")); out.flush(); in = http.getInputStream(); BufferedReader read = new BufferedReader(new InputStreamReader(in, DEFAULT_CHARSET)); String valueString = null; bufferRes = new StringBuffer(); while ((valueString = read.readLine()) != null) { bufferRes.append(valueString); } return bufferRes.toString(); } catch (Exception e) { logger.error(String.format("HTTP POST url=[%s] param=[%s] due to fail.", url, params), e); } finally { if (null != out) { try { out.close(); } catch (IOException e) { logger.error(String.format("HTTP POST url=[%s] param=[%s] close outputstream due to fail.", url, params), e); } } if (null != in) { try { in.close(); } catch (IOException e) { logger.error(String.format("HTTP POST url=[%s] param=[%s] close inputstream due to fail.", url, params), e); } } if (http != null) { // http.disconnect(); } } return StringUtils.EMPTY; }