summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vdrmanager/app/src/main/java/de/bjusystems/vdrmanager/utils/http/HttpHelper.java238
-rw-r--r--vdrmanager/app/src/main/java/de/bjusystems/vdrmanager/utils/wakeup/AsyncWakeupTask.java16
2 files changed, 24 insertions, 230 deletions
diff --git a/vdrmanager/app/src/main/java/de/bjusystems/vdrmanager/utils/http/HttpHelper.java b/vdrmanager/app/src/main/java/de/bjusystems/vdrmanager/utils/http/HttpHelper.java
index 0812f73..8d3c4d1 100644
--- a/vdrmanager/app/src/main/java/de/bjusystems/vdrmanager/utils/http/HttpHelper.java
+++ b/vdrmanager/app/src/main/java/de/bjusystems/vdrmanager/utils/http/HttpHelper.java
@@ -1,48 +1,12 @@
package de.bjusystems.vdrmanager.utils.http;
+import android.util.Base64;
+
import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
+import java.net.HttpURLConnection;
+import java.net.URL;
import java.util.Map;
-import java.util.zip.GZIPInputStream;
-
-import org.apache.http.Header;
-import org.apache.http.HeaderElement;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpRequestInterceptor;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpResponseInterceptor;
-import org.apache.http.HttpVersion;
-import org.apache.http.NameValuePair;
-import org.apache.http.auth.AuthScope;
-import org.apache.http.auth.UsernamePasswordCredentials;
-import org.apache.http.client.ClientProtocolException;
-import org.apache.http.client.ResponseHandler;
-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.client.methods.HttpRequestBase;
-import org.apache.http.conn.scheme.PlainSocketFactory;
-import org.apache.http.conn.scheme.Scheme;
-import org.apache.http.conn.scheme.SchemeRegistry;
-import org.apache.http.conn.ssl.SSLSocketFactory;
-import org.apache.http.entity.HttpEntityWrapper;
-import org.apache.http.impl.client.BasicResponseHandler;
-import org.apache.http.impl.client.DefaultHttpClient;
-import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
-import org.apache.http.message.BasicNameValuePair;
-import org.apache.http.params.BasicHttpParams;
-import org.apache.http.params.CoreConnectionPNames;
-import org.apache.http.params.CoreProtocolPNames;
-import org.apache.http.params.HttpParams;
-import org.apache.http.protocol.HTTP;
-import org.apache.http.protocol.HttpContext;
/**
* Apache HttpClient helper class for performing HTTP requests.
@@ -61,203 +25,29 @@ import org.apache.http.protocol.HttpContext;
*/
public class HttpHelper {
- private static final String CONTENT_TYPE = "Content-Type";
- private static final int POST_TYPE = 1;
- private static final int GET_TYPE = 2;
- private static final String GZIP = "gzip";
- private static final String ACCEPT_ENCODING = "Accept-Encoding";
-
- public static final String MIME_FORM_ENCODED = "application/x-www-form-urlencoded";
- public static final String MIME_TEXT_PLAIN = "text/plain";
- public static final String HTTP_RESPONSE = "HTTP_RESPONSE";
- public static final String HTTP_RESPONSE_ERROR = "HTTP_RESPONSE_ERROR";
- private final DefaultHttpClient client;
- private final ResponseHandler<String> responseHandler;
-
- /**
- * Constructor.
- *
- */
- public HttpHelper() {
-
- final HttpParams params = new BasicHttpParams();
- params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
- params.setParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET, HTTP.UTF_8);
- params.setParameter(CoreProtocolPNames.USER_AGENT, "Apache-HttpClient/Android");
- params.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 15000);
- params.setParameter(CoreConnectionPNames.STALE_CONNECTION_CHECK, false);
- final SchemeRegistry schemeRegistry = new SchemeRegistry();
- schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
- schemeRegistry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));
- final ThreadSafeClientConnManager cm = new ThreadSafeClientConnManager(params, schemeRegistry);
- client = new DefaultHttpClient(cm, params);
-
- // add gzip decompressor to handle gzipped content in responses
- // (default we *do* always send accept encoding gzip header in request)
- client.addResponseInterceptor(new HttpResponseInterceptor() {
- public void process(final HttpResponse response, final HttpContext context) throws HttpException, IOException {
- final HttpEntity entity = response.getEntity();
- final Header contentEncodingHeader = entity.getContentEncoding();
- if (contentEncodingHeader != null) {
- final HeaderElement[] codecs = contentEncodingHeader.getElements();
- for (int i = 0; i < codecs.length; i++) {
- if (codecs[i].getName().equalsIgnoreCase(HttpHelper.GZIP)) {
- response.setEntity(new GzipDecompressingEntity(response.getEntity()));
- return;
- }
- }
- }
- }
- });
-
- responseHandler = new BasicResponseHandler();
- }
-
- /**
- * Perform a simple HTTP GET operation.
- *
- */
- public String performGet(final String url) {
- return performRequest(null, url, null, null, null, null, HttpHelper.GET_TYPE);
- }
/**
* Perform an HTTP GET operation with user/pass and headers.
*
*/
- public String performGet(final String url, final String user, final String pass,
- final Map<String, String> additionalHeaders) {
- return performRequest(null, url, user, pass, additionalHeaders, null, HttpHelper.GET_TYPE);
- }
+ public int performGet(final String url, final String user, final String pass,
+ final Map<String, String> additionalHeaders) throws IOException {
- /**
- * Perform a simplified HTTP POST operation.
- *
- */
- public String performPost(final String url, final Map<String, String> params) {
- return performRequest(HttpHelper.MIME_FORM_ENCODED, url, null, null, null, params, HttpHelper.POST_TYPE);
- }
-
- /**
- * Perform an HTTP POST operation with user/pass, headers, request
- parameters,
- * and a default content-type of "application/x-www-form-urlencoded."
- *
- */
- public String performPost(final String url, final String user, final String pass,
- final Map<String, String> additionalHeaders, final Map<String, String> params) {
- return performRequest(HttpHelper.MIME_FORM_ENCODED, url, user, pass, additionalHeaders, params,
- HttpHelper.POST_TYPE);
- }
-
- /**
- * Perform an HTTP POST operation with flexible parameters (the
- complicated/flexible version of the method).
- *
- */
- public String performPost(final String contentType, final String url, final String user, final String pass,
- final Map<String, String> additionalHeaders, final Map<String, String> params) {
- return performRequest(contentType, url, user, pass, additionalHeaders, params, HttpHelper.POST_TYPE);
- }
-
- //
- // private methods
- //
- private String performRequest(final String contentType, final String url, final String user, final String pass,
- final Map<String, String> headers, final Map<String, String> params, final int requestType) {
-
- // add user and pass to client credentials if present
- if ((user != null) && (pass != null)) {
- client.getCredentialsProvider().setCredentials(AuthScope.ANY,
- new UsernamePasswordCredentials(user, pass));
- }
+ String authString = user + ":" + pass;
- // process headers using request interceptor
- final Map<String, String> sendHeaders = new HashMap<String, String>();
- // add encoding header for gzip if not present
- if (!sendHeaders.containsKey(HttpHelper.ACCEPT_ENCODING)) {
- sendHeaders.put(HttpHelper.ACCEPT_ENCODING, HttpHelper.GZIP);
- }
- if ((headers != null) && (headers.size() > 0)) {
- sendHeaders.putAll(headers);
- }
- if (requestType == HttpHelper.POST_TYPE) {
- sendHeaders.put(HttpHelper.CONTENT_TYPE, contentType);
- }
- if (sendHeaders.size() > 0) {
- client.addRequestInterceptor(new HttpRequestInterceptor() {
- public void process(final HttpRequest request, final HttpContext context) throws HttpException, IOException {
- for (final String key : sendHeaders.keySet()) {
- if (!request.containsHeader(key)) {
- request.addHeader(key, sendHeaders.get(key));
- }
- }
- }
- });
- }
+ byte[] authEncBytes = Base64.encode(authString.getBytes(), Base64.DEFAULT);
+ String authStringEnc = new String(authEncBytes);
- // handle POST or GET request respectively
- HttpRequestBase method = null;
- if (requestType == HttpHelper.POST_TYPE) {
- method = new HttpPost(url);
- // data - name/value params
- List<NameValuePair> nvps = null;
- if ((params != null) && (params.size() > 0)) {
- nvps = new ArrayList<NameValuePair>();
- for (final Map.Entry<String, String> entry : params.entrySet()) {
- nvps.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
- }
- }
- if (nvps != null) {
- try {
- final HttpPost methodPost = (HttpPost) method;
- methodPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
- } catch (final UnsupportedEncodingException e) {
- throw new RuntimeException("Error peforming HTTP request: " + e.getMessage(), e);
- }
- }
- } else if (requestType == HttpHelper.GET_TYPE) {
- method = new HttpGet(url);
- }
+ URL u = new URL(url);
+ HttpURLConnection con = (HttpURLConnection) u.openConnection();
- // execute request
- return execute(method);
+ con.setRequestMethod("GET");
+ con.setRequestProperty("Authorization", "Basic " + authStringEnc);
+ return con.getResponseCode();
}
- private synchronized String execute(final HttpRequestBase method) {
- String response = null;
- // execute method returns?!? (rather than async) - do it here sync, and wrap async elsewhere
- try {
- response = client.execute(method, responseHandler);
- } catch (final ClientProtocolException e) {
- response = HttpHelper.HTTP_RESPONSE_ERROR + " - " + e.getClass().getSimpleName() + " " + e.getMessage();
- //e.printStackTrace();
- } catch (final IOException e) {
- response = HttpHelper.HTTP_RESPONSE_ERROR + " - " + e.getClass().getSimpleName() + " " + e.getMessage();
- //e.printStackTrace();
- }
- return response;
- }
-
- static class GzipDecompressingEntity extends HttpEntityWrapper {
- public GzipDecompressingEntity(final HttpEntity entity) {
- super(entity);
- }
- @Override
- public InputStream getContent() throws IOException, IllegalStateException {
- // the wrapped entity's getContent() decides about repeatability
- final InputStream wrappedin = wrappedEntity.getContent();
- return new GZIPInputStream(wrappedin);
- }
-
- @Override
- public long getContentLength() {
- // length of ungzipped content is not known
- return -1;
- }
- }
}
diff --git a/vdrmanager/app/src/main/java/de/bjusystems/vdrmanager/utils/wakeup/AsyncWakeupTask.java b/vdrmanager/app/src/main/java/de/bjusystems/vdrmanager/utils/wakeup/AsyncWakeupTask.java
index 5c30983..0b99b04 100644
--- a/vdrmanager/app/src/main/java/de/bjusystems/vdrmanager/utils/wakeup/AsyncWakeupTask.java
+++ b/vdrmanager/app/src/main/java/de/bjusystems/vdrmanager/utils/wakeup/AsyncWakeupTask.java
@@ -5,6 +5,9 @@ import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.Toast;
+
+import java.io.IOException;
+
import de.bjusystems.vdrmanager.R;
import de.bjusystems.vdrmanager.data.Preferences;
import de.bjusystems.vdrmanager.utils.http.HttpHelper;
@@ -27,14 +30,15 @@ public class AsyncWakeupTask extends AsyncTask<Object, WakeupProgress, Void> {
if (Preferences.get().getWakeupMethod().equals("url")) {
return new Wakeuper() {
- public void wakeup(Context context) {
+ public void wakeup(Context context) throws Exception{
// wakeup by http request
final HttpHelper httpHelper = new HttpHelper();
- httpHelper.performGet(prefs.getWakeupUrl(),
- prefs.getWakeupUser(), prefs.getWakeupPassword(),
- null);
- // request sent
-
+ int result = httpHelper.performGet(prefs.getWakeupUrl(),
+ prefs.getWakeupUser(), prefs.getWakeupPassword(),
+ null);
+ if(result == 200){
+ throw new Exception("Http Status Code "+result);
+ }
}
};
} else {