package gov.anzong.util; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.zip.GZIPInputStream; import org.apache.commons.io.IOUtils; import android.os.Build; import android.util.Log; public class HttpUtil { public static String iosGetHtml(String uri) { InputStream is = null; final String ios_ua = "Mozilla/5.0 (iPad; CPU OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A405 Safari/7534.48.3"; try { URL url = new URL(uri); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestProperty("User-Agent", ios_ua); conn.setRequestProperty("Accept-Charset", "GBK"); conn.setRequestProperty("Accept-Encoding", "gzip,deflate"); if (Integer.parseInt(Build.VERSION.SDK) < Build.VERSION_CODES.FROYO) { System.setProperty("http.keepAlive", "false"); }else{ conn.setRequestProperty("Connection", "close"); } conn.setConnectTimeout(30000); conn.setReadTimeout(30000); conn.connect(); is = conn.getInputStream(); if( "gzip".equals(conn.getHeaderField("Content-Encoding")) ) is = new GZIPInputStream(is); String encoding = getCharset( conn, "GBK"); return IOUtils.toString(is, encoding); } catch (MalformedURLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { IOUtils.closeQuietly(is); } return null; } public static String bilibiliGetHtml(String uri) { InputStream is = null; final String ios_ua = "BambooPlayer Android/1.0 (ann@sayyoulove.me)"; try { URL url = new URL(uri); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestProperty("User-Agent", ios_ua); conn.setRequestProperty("Accept-Charset", "GBK"); conn.setRequestProperty("Accept-Encoding", "gzip,deflate"); if (Integer.parseInt(Build.VERSION.SDK) < Build.VERSION_CODES.FROYO) { System.setProperty("http.keepAlive", "false"); }else{ conn.setRequestProperty("Connection", "close"); } conn.setConnectTimeout(30000); conn.setReadTimeout(30000); conn.connect(); is = conn.getInputStream(); if( "gzip".equals(conn.getHeaderField("Content-Encoding")) ) is = new GZIPInputStream(is); String encoding = getCharset( conn, "GBK"); return IOUtils.toString(is, encoding); } catch (MalformedURLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { IOUtils.closeQuietly(is); } return null; } public static String iosGetHtml(String uri,String encoding) { InputStream is = null; final String ios_ua = "Mozilla/5.0 (iPad; CPU OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3"; try { URL url = new URL(uri); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestProperty("User-Agent", ios_ua); conn.setRequestProperty("Accept-Charset", "GBK"); conn.setRequestProperty("Accept-Encoding", "gzip,deflate"); if (Integer.parseInt(Build.VERSION.SDK) < Build.VERSION_CODES.FROYO) { System.setProperty("http.keepAlive", "false"); }else{ conn.setRequestProperty("Connection", "close"); } conn.setConnectTimeout(30000); conn.setReadTimeout(30000); conn.connect(); is = conn.getInputStream(); if( "gzip".equals(conn.getHeaderField("Content-Encoding")) ) is = new GZIPInputStream(is); return IOUtils.toString(is, encoding); } catch (MalformedURLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { IOUtils.closeQuietly(is); } return null; } private static String getCharset(HttpURLConnection conn, String defaultValue){ if(conn== null) return defaultValue; String contentType = conn.getHeaderField("Content-Type"); if(StringUtil.isEmpty(contentType)) return defaultValue; String startTag = "charset="; String endTag = " "; int start = contentType.indexOf(startTag); if( -1 == start) return defaultValue; start += startTag.length(); int end = contentType.indexOf( endTag, start); if(-1==end) end = contentType.length(); if(contentType.substring(start, end).equals("no")){ return "utf-8"; } return contentType.substring(start, end); } }