Android Open Source - Common-Library Http Client Util






From Project

Back to project page Common-Library.

License

The source code is released under:

Apache License

If you think the Android project Common-Library 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 com.morgan.library.utils;
/* w  w  w . j  a  v  a  2  s  .com*/
import java.io.File;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
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.entity.ContentType;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

/**
 * ??android???HttpClient???????????(???????httpcore-4.3.2.jar?httpmime-4.3.3.jar)
 * 
 * @author Morgan.Ji
 * 
 */
public class HttpClientUtil {

  private static final String TAG = HttpClientUtil.class.getName();
  private static final int CONNECT_ERROR_SLEEP_TIME = 1000;
  public final static String SERVER_CONNECT_ERROR = "{code:0,message:\"????????\"}";
  private final static int RETRY_TIME = 3;

  /**
   * get??URL
   * 
   * @param url
   * @throws AppException
   */
  public static String get(String url, Map<String, Object> params) {
    Logger.d(TAG, "get request: " + url);
    HttpClient httpClient = null;
    HttpGet httpGet = null;
    String responseBody = "";
    int time = 0;
    do {
      try {
        httpClient = new DefaultHttpClient();
        httpGet = new HttpGet(url);
        HttpResponse response = httpClient.execute(httpGet);
        int statusCode = response.getStatusLine().getStatusCode();
        if (statusCode != HttpStatus.SC_OK) {
          responseBody = SERVER_CONNECT_ERROR;
          break;
        } else {
          responseBody = EntityUtils.toString(response.getEntity());
          break;
        }
      } catch (Exception e) {
        time++;
        if (time < RETRY_TIME) {
          try {
            Thread.sleep(CONNECT_ERROR_SLEEP_TIME);
          } catch (InterruptedException e1) {
          }
          continue;
        }
        responseBody = SERVER_CONNECT_ERROR;
      } finally {
        httpClient = null;
      }
    } while (time < RETRY_TIME);
    Logger.d(TAG, "get response: " + url + "/r/n" + responseBody);
    return responseBody;
  }

  /**
   * @param url
   * @param params
   * @return
   */
  public static String post(String url, Map<String, Object> params) {
    Logger.d(TAG, "post request: " + url);
    HttpClient httpClient = null;
    HttpPost post = null;
    String responseBody = "";
    int time = 0;
    do {
      try {
        httpClient = new DefaultHttpClient();
        post = new HttpPost();
        if (null != params) {
          List<NameValuePair> nvps = new ArrayList<NameValuePair>();
          for (String name : params.keySet()) {
            nvps.add(new BasicNameValuePair(name, String
                .valueOf(params.get(name))));
          }
          post.setEntity(new UrlEncodedFormEntity(nvps, "utf-8"));
        }
        HttpResponse response = httpClient.execute(post);
        int statusCode = response.getStatusLine().getStatusCode();
        if (statusCode != HttpStatus.SC_OK) {
          responseBody = SERVER_CONNECT_ERROR;
          break;
        } else {
          responseBody = EntityUtils.toString(response.getEntity());
          break;
        }
      } catch (Exception e) {
        time++;
        if (time < RETRY_TIME) {
          try {
            Thread.sleep(CONNECT_ERROR_SLEEP_TIME);
          } catch (InterruptedException e1) {
          }
          continue;
        }
        responseBody = SERVER_CONNECT_ERROR;
      } finally {
        httpClient = null;
      }
    } while (time < RETRY_TIME);
    Logger.d(TAG, "post response: " + url + "/r/n" + responseBody);
    return responseBody;
  }

  /**
   * ??post??
   * 
   * @param url
   * @param params
   * @param files
   * @throws AppException
   */
  public static String post(String url, Map<String, Object> params,
      Map<String, File> files) {
    Logger.d(TAG, "post request: " + url + " params: " + params.toString());
    DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpPost httpPost = new HttpPost(url);
    String responseBody = "";
    int time = 0;
    do {
      try {
        MultipartEntityBuilder builder = MultipartEntityBuilder
            .create();
        builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
        builder.setCharset(Charset.forName(HTTP.UTF_8));
        ContentType TEXT_PLAIN = ContentType.create("text/plain",
            Charset.forName(HTTP.UTF_8));
        if (null != params) {
          for (String name : params.keySet()) {
            builder.addTextBody(name,
                String.valueOf(params.get(name)), TEXT_PLAIN);
          }
        }
        if (null != files) {
          for (String name : files.keySet()) {
            builder.addBinaryBody(name, files.get(name));
          }
        }
        HttpEntity reqEntity = builder.build();
        httpPost.setEntity(reqEntity);
        httpPost.getParams().setParameter("charset", HTTP.UTF_8);
        HttpResponse response = httpClient.execute(httpPost);
        int statusCode = response.getStatusLine().getStatusCode();
        if (statusCode == HttpStatus.SC_OK) {
          responseBody = EntityUtils.toString(response.getEntity());
          break;
        } else {
          responseBody = SERVER_CONNECT_ERROR;
          break;
        }
      } catch (Exception e) {
        time++;
        if (time < RETRY_TIME) {
          try {
            Thread.sleep(CONNECT_ERROR_SLEEP_TIME);
          } catch (InterruptedException e1) {
          }
          continue;
        }
        responseBody = SERVER_CONNECT_ERROR;
      } finally {
        httpClient = null;
      }
    } while (time < RETRY_TIME);
    Logger.d(TAG, "post response: " + url + " /r/n " + responseBody);
    return responseBody;
  }

}




Java Source Code List

com.morgan.library.app.APPContext.java
com.morgan.library.app.AppManager.java
com.morgan.library.app.BaseActivity.java
com.morgan.library.app.BaseFragmentActivity.java
com.morgan.library.app.BaseListActivity.java
com.morgan.library.app.BaseScreenShotActivity.java
com.morgan.library.app.CommonApplication.java
com.morgan.library.async.CustomAsyncTask.java
com.morgan.library.async.Destroyable.java
com.morgan.library.async.IFeedback.java
com.morgan.library.async.TaskManager.java
com.morgan.library.model.NetResult.java
com.morgan.library.model.SpinnerItem.java
com.morgan.library.model.WeatherType.java
com.morgan.library.model.Weather.java
com.morgan.library.net.ApiClient.java
com.morgan.library.net.ApiManager.java
com.morgan.library.net.ApiUrl.java
com.morgan.library.net.IApiClient.java
com.morgan.library.net.JsonUtils.java
com.morgan.library.net.MockApiClient.java
com.morgan.library.service.LocationManager.java
com.morgan.library.service.WeatherManager.java
com.morgan.library.snippet.CookieShare.java
com.morgan.library.snippet.CustomService.java
com.morgan.library.snippet.ExceptionCatcher.java
com.morgan.library.snippet.ProxyUsage.java
com.morgan.library.snippet.SocketClient.java
com.morgan.library.snippet.SocketServer.java
com.morgan.library.snippet.UDPClient.java
com.morgan.library.snippet.UDPServer.java
com.morgan.library.snippet.XMLAnalyze.java
com.morgan.library.task.GetWeatherTask.java
com.morgan.library.utils.AppUtils.java
com.morgan.library.utils.DateUtils.java
com.morgan.library.utils.DensityUtils.java
com.morgan.library.utils.FileUtils.java
com.morgan.library.utils.GB2Alpha.java
com.morgan.library.utils.HttpClientUtil.java
com.morgan.library.utils.HttpClientUtils.java
com.morgan.library.utils.HttpURLUtil.java
com.morgan.library.utils.ImageUtils.java
com.morgan.library.utils.KeyBoardUtils.java
com.morgan.library.utils.LocationUtils.java
com.morgan.library.utils.Logger.java
com.morgan.library.utils.NetUtils.java
com.morgan.library.utils.PhoneUtils.java
com.morgan.library.utils.SDCardUtils.java
com.morgan.library.utils.StrUtils.java
com.morgan.library.widget.AutoHideMenuWidget.java
com.morgan.library.widget.BadgeView.java
com.morgan.library.widget.CityPickerWidget.java
com.morgan.library.widget.CustomGridView.java
com.morgan.library.widget.CustomListView.java
com.morgan.library.widget.CustomToast.java
com.morgan.library.widget.CustomViewPager.java
com.morgan.library.widget.DatePickerWidget.java
com.morgan.library.widget.DirectionScrollView.java
com.morgan.library.widget.FallBallView.java
com.morgan.library.widget.HeightPickerWidget.java
com.morgan.library.widget.InterceptPressLayout.java
com.morgan.library.widget.ItalicTextView.java
com.morgan.library.widget.PopupMenuWidget.java
com.morgan.library.widget.PullToRefreshListView.java
com.morgan.library.widget.ScreenShotView.java
com.morgan.library.widget.SexPickerWidget.java
com.morgan.library.widget.SlideUpOpenWidget.java
com.morgan.library.widget.SwipeListView.java
com.morgan.library.widget.TimePickerWidget.java
com.morgan.library.widget.TouchZoomImageView.java
com.morgan.library.widget.WaitScreenWidget.java
com.morgan.library.widget.WebViewDialog.java
com.morgan.library.widget.WeightPickerWidget.java
com.morgan.library.widget.calendar.CalendarGridView.java
com.morgan.library.widget.calendar.CalendarScrollView.java
com.morgan.library.widget.calendar.CalendarViewFlipper.java
com.morgan.library.widget.calendar.CalendarWidget.java
com.morgan.library.widget.numberpicker.NumberPicker.java
com.morgan.library.widget.numberpicker.Scroller.java
com.morgan.library.widget.slidemenu.ScrollDetectorFactory.java
com.morgan.library.widget.slidemenu.ScrollDetectors.java
com.morgan.library.widget.slidemenu.SlideMenu.java