Android Open Source - openhds-tablet Abstract Http Task






From Project

Back to project page openhds-tablet.

License

The source code is released under:

OPENHDS PLATFORM OPENSOURCE LICENSE AGREEMENT Copyright (c) 2013 University of Southern Maine. All rights reserved. Redistribution and use in source and binary forms, with or without mo...

If you think the Android project openhds-tablet listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package org.openhds.mobile.task;
//from w  w w  .j a v  a  2  s  . c  om
import java.io.IOException;
import java.net.URL;

import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.ConnectTimeoutException;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.HttpConnectionParams;

import android.os.AsyncTask;

public abstract class AbstractHttpTask<Params, Progress> extends
    AsyncTask<Params, Progress, AbstractHttpTask.EndResult> {
  private static final int UNAUTHORIZED_STATUS_CODE = 401;
  private static final int SUCCESS_STATUS_CODE = 200;
  private static final int NO_CONTENT_CODE = 204;

  protected RequestContext requestCtx;
  private TaskListener listener;

  public AbstractHttpTask(RequestContext requestCtx, TaskListener listener) {
    this.requestCtx = requestCtx;
    this.listener = listener;
  }

  static enum EndResult {
    BAD_AUTHENTICATION, CONNECTION_ERROR, CONNECTION_TIMEOUT, SUCCESS, FAILURE, NO_CONTENT
  }

  public interface TaskListener {
    void onFailedAuthentication();

    void onConnectionError();

    void onConnectionTimeout();

    void onSuccess();

    void onFailure();

    void onNoContent();
  }

  public static class RequestContext {
    URL url;
    String user;
    String password;

    public RequestContext url(URL url) {
      this.url = url;
      return this;
    }

    public RequestContext user(String user) {
      this.user = user;
      return this;
    }

    public RequestContext password(String password) {
      this.password = password;
      return this;
    }
  }

  @Override
  protected EndResult doInBackground(Params... params) {
    DefaultHttpClient httpClient = buildHttpClient(requestCtx.user,
        requestCtx.password);
    try {
      HttpResponse response = executeGet(httpClient, requestCtx.url);
      switch(response.getStatusLine().getStatusCode()) {
      case SUCCESS_STATUS_CODE:
        return handleResponseData(response);
      case NO_CONTENT_CODE:
        return EndResult.NO_CONTENT;
      case UNAUTHORIZED_STATUS_CODE:
        return EndResult.BAD_AUTHENTICATION;
      default:
        return EndResult.CONNECTION_ERROR;
      }
    } catch (ClientProtocolException e) {
      return EndResult.CONNECTION_ERROR;
    } catch (ConnectTimeoutException e) {
      return EndResult.CONNECTION_TIMEOUT;
    } catch (IOException e) {
      return EndResult.CONNECTION_ERROR;
    }
  }

  public DefaultHttpClient buildHttpClient(String user, String password) {
    DefaultHttpClient httpClient = new DefaultHttpClient();
    setHttpClientParams(httpClient);
    setHttpClientCredentials(httpClient, user, password);
    return httpClient;
  }

  private void setHttpClientParams(DefaultHttpClient httpClient) {
    httpClient.getParams().setIntParameter(
        HttpConnectionParams.CONNECTION_TIMEOUT, 60 * 1000);
  }

  private void setHttpClientCredentials(DefaultHttpClient httpClient,
      String user, String password) {
    AuthScope scope = new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT,
        AuthScope.ANY_REALM);
    UsernamePasswordCredentials creds = new UsernamePasswordCredentials(
        user, password);
    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(scope, creds);

    httpClient.setCredentialsProvider(credsProvider);
  }

  public HttpResponse executeGet(DefaultHttpClient client, URL url)
      throws ClientProtocolException, IOException {
    HttpHost host = new HttpHost(url.getHost(), url.getPort());
    HttpGet httpget = new HttpGet(url.getPath());
    return client.execute(host, httpget);
  }

  @Override
  protected void onPostExecute(DownloadFormsTask.EndResult result) {
    switch (result) {
    case BAD_AUTHENTICATION:
      listener.onFailedAuthentication();
      break;
    case FAILURE:
      listener.onFailure();
      break;
    case CONNECTION_ERROR:
      listener.onConnectionError();
      break;
    case CONNECTION_TIMEOUT:
      listener.onConnectionTimeout();
      break;
    case SUCCESS:
      listener.onSuccess();
      break;
    case NO_CONTENT:
      listener.onNoContent();
      break;
    }
  }

  protected abstract EndResult handleResponseData(HttpResponse response);
}




Java Source Code List

org.openhds.mobile.BadXmlException.java
org.openhds.mobile.Converter.java
org.openhds.mobile.FieldWorkerProvider.java
org.openhds.mobile.FormsProviderAPI.java
org.openhds.mobile.InstanceProviderAPI.java
org.openhds.mobile.OpenHDS.java
org.openhds.mobile.Queries.java
org.openhds.mobile.activity.AbstractActivity.java
org.openhds.mobile.activity.FieldWorkerLoginActivity.java
org.openhds.mobile.activity.FilterActivity.java
org.openhds.mobile.activity.FilterFormActivity.java
org.openhds.mobile.activity.FilterLocationActivity.java
org.openhds.mobile.activity.FilterVisitActivity.java
org.openhds.mobile.activity.FormListActivity.java
org.openhds.mobile.activity.FormViewActivity.java
org.openhds.mobile.activity.OpeningActivity.java
org.openhds.mobile.activity.ServerPreferencesActivity.java
org.openhds.mobile.activity.ShowMapActivity.java
org.openhds.mobile.activity.SupervisorLoginActivity.java
org.openhds.mobile.activity.SupervisorMainActivity.java
org.openhds.mobile.activity.SyncDatabaseActivity.java
org.openhds.mobile.activity.UpdateActivity.java
org.openhds.mobile.adapter.AdapterContent.java
org.openhds.mobile.adapter.MapAdapter.java
org.openhds.mobile.database.DatabaseAdapter.java
org.openhds.mobile.database.DeathUpdate.java
org.openhds.mobile.database.ExternalInMigrationUpdate.java
org.openhds.mobile.database.HouseholdUpdate.java
org.openhds.mobile.database.InternalInMigrationUpdate.java
org.openhds.mobile.database.LocationUpdate.java
org.openhds.mobile.database.MembershipUpdate.java
org.openhds.mobile.database.OutMigrationUpdate.java
org.openhds.mobile.database.PregnancyOutcomeUpdate.java
org.openhds.mobile.database.RelationshipUpdate.java
org.openhds.mobile.database.Updatable.java
org.openhds.mobile.database.VisitUpdate.java
org.openhds.mobile.fragment.EventFragment.java
org.openhds.mobile.fragment.ProgressFragment.java
org.openhds.mobile.fragment.SelectionFilterFragment.java
org.openhds.mobile.fragment.SelectionFilterLocFragment.java
org.openhds.mobile.fragment.SelectionFormFragment.java
org.openhds.mobile.fragment.SelectionFragment.java
org.openhds.mobile.fragment.ValueFormFragment.java
org.openhds.mobile.fragment.ValueFragment.java
org.openhds.mobile.fragment.ValueLocFragment.java
org.openhds.mobile.listener.CollectEntitiesListener.java
org.openhds.mobile.listener.OdkFormLoadListener.java
org.openhds.mobile.listener.RetrieveFieldWorkersListener.java
org.openhds.mobile.listener.TaskCompleteListener.java
org.openhds.mobile.listener.ValueSelectedListener.java
org.openhds.mobile.model.Child.java
org.openhds.mobile.model.FieldWorker.java
org.openhds.mobile.model.FilledForm.java
org.openhds.mobile.model.FilledParams.java
org.openhds.mobile.model.FormFiller.java
org.openhds.mobile.model.FormSubmissionRecord.java
org.openhds.mobile.model.FormXmlReader.java
org.openhds.mobile.model.Form.java
org.openhds.mobile.model.HierarchySelection.java
org.openhds.mobile.model.Individual.java
org.openhds.mobile.model.LocationHierarchy.java
org.openhds.mobile.model.LocationVisit.java
org.openhds.mobile.model.Location.java
org.openhds.mobile.model.Membership.java
org.openhds.mobile.model.PregnancyObservationUpdate.java
org.openhds.mobile.model.PregnancyOutcome.java
org.openhds.mobile.model.Relationship.java
org.openhds.mobile.model.Result.java
org.openhds.mobile.model.Round.java
org.openhds.mobile.model.SocialGroup.java
org.openhds.mobile.model.StateMachine.java
org.openhds.mobile.model.Supervisor.java
org.openhds.mobile.model.UpdateEvent.java
org.openhds.mobile.model.UpdateParams.java
org.openhds.mobile.model.UpdateStatus.java
org.openhds.mobile.model.Visit.java
org.openhds.mobile.provider.OpenHDSProvider.java
org.openhds.mobile.task.AbstractHttpTask.java
org.openhds.mobile.task.AuthenticateTask.java
org.openhds.mobile.task.DownloadFormsTask.java
org.openhds.mobile.task.FieldWorkerLoginTask.java
org.openhds.mobile.task.OdkFormLoadTask.java
org.openhds.mobile.task.OdkGeneratedFormLoadTask.java
org.openhds.mobile.task.SupervisorLoginTask.java
org.openhds.mobile.task.SyncEntitiesTask.java
org.openhds.mobile.task.SyncFormsTask.java
org.openhds.mobile.utilities.L.java
org.openhds.mobile.utilities.Logg.java
org.openhds.mobile.utilities.UrlUtils.java