package pontezit.android.tilos.com.utils; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLDecoder; import java.util.Map; import pontezit.android.tilos.com.utils.Utils; import android.net.Uri; public class HTTPTransport extends AbsTransport { private static final String PROTOCOL = "http"; private static final int DEFAULT_PORT = 80; private HttpURLConnection conn = null; private InputStream is = null; private int mResponseCode = -1; private String mContentType = null; public HTTPTransport() { super(); } public HTTPTransport(Uri uri) { super(uri); } public static String getProtocolName() { return PROTOCOL; } protected String getPrivateProtocolName() { return PROTOCOL; } /** * Encode the current transport into a URI that can be passed via intent calls. * @return URI to host */ public static Uri getUri(String input) { return getUri(input, false); } /** * Encode the current transport into a URI that can be passed via intent calls. * @return URI to host */ private static Uri getUri(String input, boolean scrubUri) { Uri uri = Uri.parse(input); return uri; } @Override public void connect() throws IOException { URL url = new URL(uri.toString()); conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(6000); conn.setReadTimeout(6000); conn.setRequestMethod("GET"); conn.setRequestProperty("User-Agent", "ServeStream"); mResponseCode = conn.getResponseCode(); if (mResponseCode == -1) { mResponseCode = HttpURLConnection.HTTP_OK; } mContentType = conn.getContentType(); is = conn.getInputStream(); } @Override public void close() { Utils.closeInputStream(is); Utils.closeHttpConnection(conn); } @Override public boolean exists() { return true; } @Override public boolean isConnected() { return is != null; } @Override public int getDefaultPort() { return DEFAULT_PORT; } @Override public Uri createUri(Uri uri) { return uri; } @Override public String getContentType() { return mContentType; } @Override public boolean usesNetwork() { return true; } @Override public boolean shouldSave() { return true; } @Override public InputStream getConnection() { return is; } @Override public boolean isPotentialPlaylist() { return true; } }