package me.devsaki.hentoid.util; import android.content.pm.PackageManager; import android.webkit.CookieManager; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import me.devsaki.hentoid.HentoidApp; /** * Created by DevSaki on 14/05/2015. * Http related utility class */ public class HttpClientHelper { private static final String TAG = LogHelper.makeLogTag(HttpClientHelper.class); private static final CookieManager cookieManager = CookieManager.getInstance(); public static String call(String urlString) throws Exception { String cookie = cookieManager.getCookie(urlString); if (cookie == null || cookie.isEmpty()) { cookie = Helper.getSessionCookie(); } HttpURLConnection urlConnection = null; InputStream is = null; String userAgent; try { userAgent = Helper.getAppUserAgent(HentoidApp.getAppContext()); } catch (PackageManager.NameNotFoundException e) { userAgent = Consts.USER_AGENT; } try { URL url = new URL(urlString); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setConnectTimeout(10000); urlConnection.setRequestMethod("GET"); urlConnection.setRequestProperty("User-Agent", userAgent); urlConnection.setRequestProperty("Cookie", cookie); is = new BufferedInputStream(urlConnection.getInputStream()); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); StringBuilder sb = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { sb.append(line); } if (sb.length() == 0) { // Stream was empty. No point in parsing. return null; } String result = sb.toString(); int code = urlConnection.getResponseCode(); if (code != 200) { throw new HttpClientException(result, code); } return result; } finally { if (is != null) { try { is.close(); } catch (IOException e) { LogHelper.e(TAG, e, "InputStream Error"); } } if (urlConnection != null) { urlConnection.disconnect(); } } } }