Android Open Source - task4java Image Client Gingerbread






From Project

Back to project page task4java.

License

The source code is released under:

Apache License

If you think the Android project task4java 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

/*
 *  Copyright (c) 2014 Andree Hagelstein, Maik Schulze, Deutsche Telekom AG. All Rights Reserved.
 *  //from   www.j  a v  a 2  s. com
 *  Filename: ImageClientGingerbread.java
 */
package com.task4java.http.client;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.MalformedURLException;
import java.net.Proxy;
import java.net.URL;
import java.security.cert.CertificateException;
import java.util.concurrent.atomic.AtomicInteger;

import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import com.task4java.Stopwatch;
import com.task4java.Tuple;
import com.task4java.http.HttpStatusCodes;
import com.task4java.net.URLBuilder;
import com.task4java.util.log.Logger;

public class ImageClientGingerbread implements IImageClient
{
  private static final String DID_NOT_DEFINE_AN_ACTION = "You did not define an action! Image call canceled!";
  
    private static final String TAG = ImageClient.class.getName();
    private static AtomicInteger _operations = new AtomicInteger(0);
    private static AtomicInteger _connects = new AtomicInteger(0);
    
    private static Tuple<String, Integer> _proxySettings = null;
    
    public int getOperations()
    {
        return _operations.get();
    }
    
    public void ignoreCertificateErrors()
    {
    // Create a trust manager that does not validate certificate chains
        TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {

            @Override
            public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
            }

            @Override
            public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
            }

            @Override
            public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                return null;
            }
        } };

        // Install the all-trusting trust manager
        try {
            
            SSLContext sc = SSLContext.getInstance("SSL");
            sc.init(null, trustAllCerts, new java.security.SecureRandom());
            HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
            
        } 
        catch (Exception e) {
        }
    }
    
    public void setProxy(String hostname, Integer port)
    {
      if (hostname == null)
        {
            _proxySettings = null;
        }
        else
        {
            _proxySettings = new Tuple<String, Integer>(hostname, port);
        }
    }
    
    public ImageResponse getImage(URL action) throws MalformedURLException, IOException
    {
        HttpURLConnection connection = null;
        InputStream inputStream = null;
        
        int responseLength = -1;
        
        Stopwatch watch = new Stopwatch();
        watch.start();
        
        try {
             
          if (action == null) {
        Logger.instance.e(TAG, DID_NOT_DEFINE_AN_ACTION);

        throw new IllegalArgumentException(DID_NOT_DEFINE_AN_ACTION);
      }
          
            int connects = _connects.incrementAndGet();
            _operations.incrementAndGet();
            
            Logger.instance.d(TAG, "Enter getImage, connects: " + connects + ", url: " + action);
                        
            if (_proxySettings == null)
            {
              connection = (HttpURLConnection) new URLBuilder(action).getURL().openConnection(); 
            }
            else
            {
              Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(_proxySettings.left, _proxySettings.right));
              connection = (HttpURLConnection) new URLBuilder(action).getURL().openConnection(proxy); 
            }
            
            connection.setReadTimeout(60000);
      connection.setConnectTimeout(60000);
            
            connection.connect();
            
            ImageResponse response = new ImageResponse(connection.getResponseCode());
                        
            if (response.getStatusCode() < HttpStatusCodes.OK || response.getStatusCode() >= HttpStatusCodes.BadRequest)
            {
                Logger.instance.d(TAG, "Leave getImage with status code: " + response.getStatusCode());
                
                return response;
            }
            
            inputStream = connection.getInputStream();
            
            if (inputStream != null)
            {
              ByteArrayOutputStream bos = new ByteArrayOutputStream();
  
        byte[] buffer = new byte[1024 * 4];
        int n = 0;
        
        while (-1 != (n = inputStream.read(buffer))) {
          bos.write(buffer, 0, n);
        }
  
              response.setResponseData(bos.toByteArray());
              
              responseLength = response.getResponseData().length;
            }
            
            return response;
        }
        finally
        {
          int connects = _connects.decrementAndGet();
            
            watch.stop();
            
            Logger.instance.d(TAG, "Leave getImage, connects: " + connects + ", time: " + watch.getElapsedMilliseconds() + ", length: " + responseLength  + ", url: " + action);
          
            if (inputStream != null)
            {
                inputStream.close();
                inputStream = null;
            }
            
            if (connection != null)
            {
                connection.disconnect();
                connection = null;
            }
        }
    }
}




Java Source Code List

com.task4java.IndexedList.java
com.task4java.KeyValuePair.java
com.task4java.Stopwatch.java
com.task4java.StringUtils.java
com.task4java.Tuple.java
com.task4java.android.activity.ActivityUtils.java
com.task4java.android.activity.BaseActivity.java
com.task4java.android.annotation.Annotations.java
com.task4java.android.examples.App.java
com.task4java.android.examples.activity.AboutActivity.java
com.task4java.android.examples.activity.ExpandableListAdapter.java
com.task4java.android.examples.activity.MainActivity.java
com.task4java.android.examples.activity.WelcomeActivity.java
com.task4java.android.examples.backend.AndroidServiceClient.java
com.task4java.android.util.concurrent.ActivityExecutor.java
com.task4java.android.util.concurrent.HandlerExecutor.java
com.task4java.data.backend.IServiceClient.java
com.task4java.data.backend.ServiceClient.java
com.task4java.data.backend.model.MainMenuAnnotation.java
com.task4java.data.frontend.ApplicationClient.java
com.task4java.data.frontend.model.MainMenuItemGroupList.java
com.task4java.data.frontend.model.MainMenuItemGroup.java
com.task4java.data.frontend.model.MainMenuItem.java
com.task4java.http.HttpHeaders.java
com.task4java.http.HttpMimeTypes.java
com.task4java.http.HttpRequestMethods.java
com.task4java.http.HttpStatusCodes.java
com.task4java.http.client.HttpContent.java
com.task4java.http.client.HttpStringContent.java
com.task4java.http.client.IImageClient.java
com.task4java.http.client.IRestClient.java
com.task4java.http.client.ImageClientGingerbread.java
com.task4java.http.client.ImageClient.java
com.task4java.http.client.ImageResponse.java
com.task4java.http.client.RestClientGingerbread.java
com.task4java.http.client.RestClient.java
com.task4java.http.client.RestResponse.java
com.task4java.lang.reflect.ReflectionCache.java
com.task4java.net.URLBuilder.java
com.task4java.util.concurrent.CallableTask.java
com.task4java.util.concurrent.CallableValue2.java
com.task4java.util.concurrent.CallableValue.java
com.task4java.util.concurrent.ITaskStart.java
com.task4java.util.concurrent.ITask.java
com.task4java.util.concurrent.TaskCompletionSource.java
com.task4java.util.concurrent.TaskContinuationOptions.java
com.task4java.util.concurrent.TaskException.java
com.task4java.util.concurrent.TaskFactory.java
com.task4java.util.concurrent.TaskResultException.java
com.task4java.util.concurrent.TaskStartException.java
com.task4java.util.concurrent.Task.java
com.task4java.util.log.ConsoleLogger.java
com.task4java.util.log.ILog.java
com.task4java.util.log.Logger.java