Java tutorial
/* * Copyright (c) 2013. wyouflf (wyouflf@gmail.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.robam.xutils.Utils; import android.text.TextUtils; import org.apache.http.Header; import org.apache.http.HeaderElement; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.protocol.HTTP; import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; import java.security.cert.X509Certificate; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; public class OtherUtils { private OtherUtils() { } /** * ??Http.Http.1.Accept_Ranges.2.Content-Range. * ?bytes * * @param response Http? * @return true?, false?? */ public static boolean isSupportRange(final HttpResponse response) { if (response == null) { return false; } Header header = response.getFirstHeader("Accept-Ranges"); if (header != null) { return "bytes".equals(header.getValue()); } header = response.getFirstHeader("Content-Range"); if (header != null) { String value = header.getValue(); return value != null && value.startsWith("bytes"); } return false; } /** * Http???? * * @param response Http? * @return ?? */ public static String getFileNameFromHttpResponse(final HttpResponse response) { if (response == null) return null; String result = null; Header header = response.getFirstHeader("Content-Disposition"); if (header != null) { for (HeaderElement element : header.getElements()) { NameValuePair fileNamePair = element.getParameterByName("filename"); if (fileNamePair != null) { result = fileNamePair.getValue(); // try to get correct encoding str result = CharsetUtils.toCharset(result, HTTP.UTF_8, result.length()); break; } } } return result; } /** * ?HTTP * * @param request HTTP * @return */ public static Charset getCharsetFromHttpRequest(final HttpRequestBase request) { if (request == null) return null; String charsetName = null; Header header = request.getFirstHeader("Content-Type"); if (header != null) { for (HeaderElement element : header.getElements()) { NameValuePair charsetPair = element.getParameterByName("charset"); if (charsetPair != null) { charsetName = charsetPair.getValue(); break; } } } boolean isSupportedCharset = false; if (!TextUtils.isEmpty(charsetName)) { try { isSupportedCharset = Charset.isSupported(charsetName); } catch (Throwable e) { } } return isSupportedCharset ? Charset.forName(charsetName) : null; } private static final int STRING_BUFFER_LENGTH = 100; public static long sizeOfString(final String str, String charset) throws UnsupportedEncodingException { if (TextUtils.isEmpty(str)) { return 0; } int len = str.length(); if (len < STRING_BUFFER_LENGTH) { return str.getBytes(charset).length; } long size = 0; for (int i = 0; i < len; i += STRING_BUFFER_LENGTH) { int end = i + STRING_BUFFER_LENGTH; end = end < len ? end : len; String temp = getSubString(str, i, end); size += temp.getBytes(charset).length; } return size; } // get the sub string for large string public static String getSubString(final String str, int start, int end) { return new String(str.substring(start, end)); } public static StackTraceElement getCurrentStackTraceElement() { return Thread.currentThread().getStackTrace()[3]; } public static StackTraceElement getCallerStackTraceElement() { return Thread.currentThread().getStackTrace()[4]; } private static TrustManager[] trustAllCerts; /** * */ public static void trustAllSSLForHttpsURLConnection() { // Create a trust manager that does not validate certificate chains if (trustAllCerts == null) { trustAllCerts = new TrustManager[] { new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(X509Certificate[] certs, String authType) { } public void checkServerTrusted(X509Certificate[] certs, String authType) { } } }; } // Install the all-trusting trust manager final SSLContext sslContext; try { sslContext = SSLContext.getInstance("TLS"); sslContext.init(null, trustAllCerts, null); HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory()); } catch (Throwable e) { LogUtils.e(e.getMessage(), e); } HttpsURLConnection .setDefaultHostnameVerifier(org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); } }