package com.radicaldynamic.groupinform.utilities; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URI; import java.net.URISyntaxException; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.cookie.Cookie; import android.util.Log; import com.radicaldynamic.groupinform.application.Collect; public class HttpUtils { private static final String t = "HttpUtils: "; /* * TODO: implement cookie handling */ public static String getUrlData(String url) { final String tt = t + "getUrlData(): "; String websiteData = null; try { SecureHttpClient client = new SecureHttpClient(); // Load any cookies that have been stored if (Collect.getInstance().getInformOnlineState().getSession() == null) { if (Collect.Log.WARN) Log.w(Collect.LOGTAG, tt + "connection without session"); } else { client.setCookieStore(Collect.getInstance().getInformOnlineState().getSession()); } URI uri = new URI(url); HttpGet method = new HttpGet(uri); HttpResponse response = client.execute(method); InputStream data = response.getEntity().getContent(); websiteData = generateString(data); // Make sure we don't leak memory data.close(); client.getConnectionManager().shutdown(); // Remember any session cookies that may have been returned List<Cookie> cookies = client.getCookieStore().getCookies(); if (cookies.isEmpty()) { if (Collect.Log.WARN) Log.w(Collect.LOGTAG, tt + "no cookies"); } else { Collect.getInstance().getInformOnlineState().setSession(client.getCookieStore()); for (int i = 0; i < cookies.size(); i++) if (Collect.Log.VERBOSE) Log.v(Collect.LOGTAG, tt + "parsed cookie " + cookies.get(i).toString()); } // Shutdown client manager to ensure deallocation of all system resources client.getConnectionManager().shutdown(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (URISyntaxException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } if (Collect.Log.VERBOSE) Log.v(Collect.LOGTAG, tt + "parsing result " + websiteData); return websiteData; } /* * TODO: implement cookie handling */ public static String postUrlData(String url, List<NameValuePair> params) { final String tt = t + "postUrlData(): "; String websiteData = null; try { SecureHttpClient client = new SecureHttpClient(); // Load any cookies that have been stored if (Collect.getInstance().getInformOnlineState().getSession() == null) { if (Collect.Log.WARN) Log.w(Collect.LOGTAG, tt + "connection without session"); } else { client.setCookieStore(Collect.getInstance().getInformOnlineState().getSession()); } URI uri = new URI(url); HttpPost method = new HttpPost(uri); method.setEntity(new UrlEncodedFormEntity(params)); HttpResponse response = client.execute(method); InputStream data = response.getEntity().getContent(); websiteData = generateString(data); // Make sure we don't leak memory data.close(); client.getConnectionManager().shutdown(); // Remember any session cookies that may have been returned List<Cookie> cookies = client.getCookieStore().getCookies(); if (cookies.isEmpty()) { if (Collect.Log.WARN) Log.w(Collect.LOGTAG, tt + "no cookies"); } else { Collect.getInstance().getInformOnlineState().setSession(client.getCookieStore()); for (int i = 0; i < cookies.size(); i++) if (Collect.Log.VERBOSE) Log.v(Collect.LOGTAG, tt + "parsed cookie " + cookies.get(i).toString()); } // Shutdown client manager to ensure deallocation of all system resources client.getConnectionManager().shutdown(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (URISyntaxException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } if (Collect.Log.VERBOSE) Log.v(Collect.LOGTAG, tt + "parsing result " + websiteData); return websiteData; } private static String generateString(InputStream stream) throws IOException { InputStreamReader reader = new InputStreamReader(stream); BufferedReader buffer = new BufferedReader(reader, 8192); StringBuilder sb = new StringBuilder(); String cur; while ((cur = buffer.readLine()) != null) { sb.append(cur + "\n"); } stream.close(); return sb.toString(); } }