| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
jopen
10年前发布

HTTP封装类 工具类 For Android

================2013 04 10 解决2.1 认证问题

package com.su.funycard.util;    import java.io.ByteArrayOutputStream;  import java.io.DataOutputStream;  import java.io.File;  import java.io.FileInputStream;  import java.io.IOException;  import java.io.InputStream;  import java.io.OutputStream;  import java.net.HttpURLConnection;  import java.net.MalformedURLException;  import java.net.Socket;  import java.net.URL;  import java.net.UnknownHostException;  import java.security.KeyManagementException;  import java.security.KeyStore;  import java.security.KeyStoreException;  import java.security.NoSuchAlgorithmException;  import java.security.UnrecoverableKeyException;  import java.util.ArrayList;  import java.util.HashMap;  import java.util.Map;  import java.util.UUID;    import javax.net.ssl.SSLContext;  import javax.net.ssl.TrustManager;  import javax.net.ssl.X509TrustManager;    import org.apache.http.Header;  import org.apache.http.HttpEntity;  import org.apache.http.HttpResponse;  import org.apache.http.HttpStatus;  import org.apache.http.HttpVersion;  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.conn.ClientConnectionManager;  import org.apache.http.conn.ConnectTimeoutException;  import org.apache.http.conn.params.ConnManagerParams;  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.impl.client.DefaultHttpClient;  import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;  import org.apache.http.message.BasicHeader;  import org.apache.http.message.BasicNameValuePair;  import org.apache.http.params.BasicHttpParams;  import org.apache.http.params.HttpConnectionParams;  import org.apache.http.params.HttpParams;  import org.apache.http.params.HttpProtocolParams;  import org.apache.http.protocol.HTTP;  import org.apache.http.util.EntityUtils;    import android.content.Context;  import android.net.ConnectivityManager;  import android.net.NetworkInfo;  import android.util.Log;  import android.widget.Toast;    /**   * HttpUtil Class Capsule Most Functions of Http Operations   *    * @author sfshine   *    */  public class HttpUtil {   private static Header[] headers = new BasicHeader[1];   private static String TAG = "HTTPUTIL";   private static int TIMEOUT = 5 * 1000;   private static final String BOUNDARY = "---------------------------7db1c523809b2";   /**    * Your header of http op    *     * @return    */   static {      headers[0] = new BasicHeader("User-Agent",      "Mozilla/4.0 (compatible; MSIE 5.0; Windows XP; DigExt)");     }     public static boolean delete(String murl) throws Exception {    URL url = new URL(murl);    HttpURLConnection conn = (HttpURLConnection) url.openConnection();    conn.setRequestMethod("DELETE");    conn.setConnectTimeout(5000);    if (conn.getResponseCode() == 204) {       MLog.e(conn.toString());     return true;    }    MLog.e(conn.getRequestMethod());    MLog.e(conn.getResponseCode() + "");    return false;   }     /**    * Op Http get request    *     * @param url    * @param map    *            Values to request    * @return    */   static public String get(String url) {    return get(url, null);     }     static public String get(String url, HashMap<String, String> map) {      HttpClient client = getNewHttpClient();    HttpConnectionParams.setConnectionTimeout(client.getParams(), TIMEOUT);    HttpConnectionParams.setSoTimeout(client.getParams(), TIMEOUT);    ConnManagerParams.setTimeout(client.getParams(), TIMEOUT);    String result = "ERROR";    if (null != map) {     int i = 0;     for (Map.Entry<String, String> entry : map.entrySet()) {        Log.i(TAG, entry.getKey() + "=>" + entry.getValue());      if (i == 0) {       url = url + "?" + entry.getKey() + "=" + entry.getValue();      } else {       url = url + "&" + entry.getKey() + "=" + entry.getValue();      }        i++;       }    }    HttpGet get = new HttpGet(url);    get.setHeaders(headers);    Log.i(TAG, url);    try {       HttpResponse response = client.execute(get);       if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {      // setCookie(response);      result = EntityUtils.toString(response.getEntity(), "UTF-8");       } else {      result = EntityUtils.toString(response.getEntity(), "UTF-8")        + response.getStatusLine().getStatusCode() + "ERROR";     }      } catch (ConnectTimeoutException e) {     result = "TIMEOUTERROR";    }      catch (Exception e) {     result = "OTHERERROR";     e.printStackTrace();      }    Log.i(TAG, "result =>" + result);      return result;   }     /**    * Op Http post request , "404error" response if failed    *     * @param url    * @param map    *            Values to request    * @return    */     static public String post(String url, HashMap<String, String> map) {      HttpClient client = getNewHttpClient();    HttpConnectionParams.setConnectionTimeout(client.getParams(), TIMEOUT);    HttpConnectionParams.setSoTimeout(client.getParams(), TIMEOUT);    ConnManagerParams.setTimeout(client.getParams(), TIMEOUT);    HttpPost post = new HttpPost(url);    MLog.i(TAG, url);    post.setHeaders(headers);    String result = "ERROR";    ArrayList<BasicNameValuePair> pairList = new ArrayList<BasicNameValuePair>();    if (map != null) {     for (Map.Entry<String, String> entry : map.entrySet()) {      Log.i(TAG, entry.getKey() + "=>" + entry.getValue());      BasicNameValuePair pair = new BasicNameValuePair(        entry.getKey(), entry.getValue());      pairList.add(pair);     }      }    try {     HttpEntity entity = new UrlEncodedFormEntity(pairList, "UTF-8");     post.setEntity(entity);     HttpResponse response = client.execute(post);       if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {        result = EntityUtils.toString(response.getEntity(), "UTF-8");       } else {      result = EntityUtils.toString(response.getEntity(), "UTF-8")        + response.getStatusLine().getStatusCode() + "ERROR";     }      } catch (ConnectTimeoutException e) {     result = "TIMEOUTERROR";    }      catch (Exception e) {     result = "OTHERERROR";     e.printStackTrace();      }    Log.i(TAG, "result =>" + result);    return result;   }     /**    * 自定义的http请求可以设置为DELETE PUT等而不是GET    *     * @param url    * @param params    * @param method    * @throws IOException    */     public static String customrequest(String url,     HashMap<String, String> params, String method) {    try {       URL postUrl = new URL(url);     HttpURLConnection conn = (HttpURLConnection) postUrl       .openConnection();     conn.setDoOutput(true);     conn.setDoInput(true);     conn.setConnectTimeout(5 * 1000);       conn.setRequestMethod(method);     conn.setUseCaches(false);     conn.setInstanceFollowRedirects(true);     conn.setRequestProperty("Content-Type",       "application/x-www-form-urlencoded");     conn.setRequestProperty("User-Agent",       "Mozilla/4.0 (compatible; MSIE 5.0; Windows XP; DigExt)");       conn.connect();     OutputStream out = conn.getOutputStream();     StringBuilder sb = new StringBuilder();     if (null != params) {      int i = params.size();      for (Map.Entry<String, String> entry : params.entrySet()) {       if (i == 1) {        sb.append(entry.getKey() + "=" + entry.getValue());       } else {        sb.append(entry.getKey() + "=" + entry.getValue() + "&");       }         i--;      }     }     String content = sb.toString();     out.write(content.getBytes("UTF-8"));     out.flush();     out.close();     InputStream inStream = conn.getInputStream();     String result = inputStream2String(inStream);     Log.i(TAG, "result>" + result);     conn.disconnect();     return result;    } catch (Exception e) {     // TODO: handle exception    }    return null;   }     /**    * 必须严格限制get请求所以增加这个方法 这个方法也可以自定义请求    *     * @param url    * @param method    * @throws Exception    */     public static String customrequestget(String url,     HashMap<String, String> map, String method) {      if (null != map) {     int i = 0;     for (Map.Entry<String, String> entry : map.entrySet()) {        if (i == 0) {       url = url + "?" + entry.getKey() + "=" + entry.getValue();      } else {       url = url + "&" + entry.getKey() + "=" + entry.getValue();      }        i++;     }    }    try {       URL murl = new URL(url);     System.out.print(url);     HttpURLConnection conn = (HttpURLConnection) murl.openConnection();     conn.setConnectTimeout(5 * 1000);     conn.setRequestMethod(method);       conn.setRequestProperty("User-Agent",       "Mozilla/4.0 (compatible; MSIE 5.0; Windows XP; DigExt)");       InputStream inStream = conn.getInputStream();     String result = inputStream2String(inStream);     Log.i(TAG, "result>" + result);     conn.disconnect();     return result;    } catch (Exception e) {     // TODO: handle exception    }    return null;   }     /**    * 上传多张图片    */   public static String post(String actionUrl, Map<String, String> params,     Map<String, File> files) {      String BOUNDARY = java.util.UUID.randomUUID().toString();    String PREFIX = "--", LINEND = "\r\n";    String MULTIPART_FROM_DATA = "multipart/form-data";    String CHARSET = "UTF-8";    try {       URL uri = new URL(actionUrl);     HttpURLConnection conn = (HttpURLConnection) uri.openConnection();     conn.setReadTimeout(5 * 1000); // 缓存的最长时间     conn.setDoInput(true);// 允许输入     conn.setDoOutput(true);// 允许输出     conn.setUseCaches(false); // 不允许使用缓存     conn.setRequestMethod("POST");     conn.setRequestProperty("connection", "keep-alive");     conn.setRequestProperty("Charsert", "UTF-8");     conn.setRequestProperty("Content-Type", MULTIPART_FROM_DATA       + ";boundary=" + BOUNDARY);       // 首先组拼文本类型的参数     StringBuilder sb = new StringBuilder();     for (Map.Entry<String, String> entry : params.entrySet()) {      sb.append(PREFIX);      sb.append(BOUNDARY);      sb.append(LINEND);      sb.append("Content-Disposition: form-data; name=\""        + entry.getKey() + "\"" + LINEND);      sb.append("Content-Type: text/plain; charset=" + CHARSET        + LINEND);      sb.append("Content-Transfer-Encoding: 8bit" + LINEND);      sb.append(LINEND);      sb.append(entry.getValue());      sb.append(LINEND);     }       DataOutputStream outStream = new DataOutputStream(       conn.getOutputStream());     outStream.write(sb.toString().getBytes());     InputStream in = null;     // 发送文件数据     if (files != null) {      for (Map.Entry<String, File> file : files.entrySet()) {         StringBuilder sb1 = new StringBuilder();       sb1.append(PREFIX);       sb1.append(BOUNDARY);       sb1.append(LINEND);       sb1.append("Content-Disposition: form-data; name=\""         + file.getKey() + "\"; filename=\""         + file.getValue().getName() + "\"" + LINEND);       sb1.append("Content-Type: image/pjpeg; " + LINEND);       sb1.append(LINEND);       outStream.write(sb1.toString().getBytes());         InputStream is = new FileInputStream(file.getValue());       byte[] buffer = new byte[1024];       int len = 0;       while ((len = is.read(buffer)) != -1) {        outStream.write(buffer, 0, len);       }         is.close();       outStream.write(LINEND.getBytes());      }        // 请求结束标志      byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND)        .getBytes();      outStream.write(end_data);      outStream.flush();      // 得到响应码      int res = conn.getResponseCode();      // if (res == 200) {      in = conn.getInputStream();      int ch;      StringBuilder sb2 = new StringBuilder();      while ((ch = in.read()) != -1) {       sb2.append((char) ch);      }        // }      outStream.close();      conn.disconnect();      return in.toString();     }    } catch (Exception e) {      }    return null;     }     /**    * is转String    *     * @param in    * @return    * @throws IOException    */   public static String inputStream2String(InputStream in) throws IOException {    StringBuffer out = new StringBuffer();    byte[] b = new byte[4096];    for (int n; (n = in.read(b)) != -1;) {     out.append(new String(b, 0, n));    }    return out.toString();   }     /**    * check net work    *     * @param context    * @return    */   public static boolean hasNetwork(Context context) {    ConnectivityManager con = (ConnectivityManager) context      .getSystemService(Context.CONNECTIVITY_SERVICE);    NetworkInfo workinfo = con.getActiveNetworkInfo();    if (workinfo == null || !workinfo.isAvailable()) {     Toast.makeText(context, "当前无网络连接,请稍后重试", Toast.LENGTH_SHORT).show();     return false;    }    return true;   }     /***    * @category check if the string is null    * @return true if is null    * */   public static boolean isNull(String string) {    boolean t1 = "".equals(string);    boolean t2 = string == null;    boolean t3 = string.equals("null");    if (t1 || t2 || t3) {     return true;    } else {     return false;    }   }     static public byte[] getBytes(File file) throws IOException {    InputStream ios = null;    ByteArrayOutputStream ous = null;    try {     byte[] buffer = new byte[4096];     ous = new ByteArrayOutputStream();     ios = new FileInputStream(file);     int read = 0;     while ((read = ios.read(buffer)) != -1) {      ous.write(buffer, 0, read);     }    } finally {     try {      if (ous != null)       ous.close();     } catch (IOException e) {     }       try {      if (ios != null)       ios.close();     } catch (IOException e) {     }    }      return ous.toByteArray();   }     public static class MLog {    static public void e(String msg) {     android.util.Log.e("=======ERROR======", msg);    }      static public void e(String tag, String msg) {     android.util.Log.e(tag, msg);    }      static public void i(String msg) {     android.util.Log.i("=======INFO======", msg);    }      static public void i(String tag, String msg) {     android.util.Log.i(tag, msg);    }     }     /**    * 处理https加密失败的情况    *     * @return    */   public static HttpClient getNewHttpClient() {    try {     KeyStore trustStore = KeyStore.getInstance(KeyStore       .getDefaultType());     trustStore.load(null, null);       SSLSocketFactory sf = new HttpUtil.SSLSocketFactoryEx(trustStore);     sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);       HttpParams params = new BasicHttpParams();     HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);     HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);       SchemeRegistry registry = new SchemeRegistry();     registry.register(new Scheme("http", PlainSocketFactory       .getSocketFactory(), 80));     registry.register(new Scheme("https", sf, 443));       ClientConnectionManager ccm = new ThreadSafeClientConnManager(       params, registry);       return new DefaultHttpClient(ccm, params);    } catch (Exception e) {     return new DefaultHttpClient();    }   }     static public class SSLSocketFactoryEx extends SSLSocketFactory {      SSLContext sslContext = SSLContext.getInstance("TLS");      public SSLSocketFactoryEx(KeyStore truststore)      throws NoSuchAlgorithmException, KeyManagementException,      KeyStoreException, UnrecoverableKeyException {     super(truststore);       TrustManager tm = new X509TrustManager() {      public java.security.cert.X509Certificate[] getAcceptedIssuers() {       return null;      }        @Override      public void checkClientTrusted(        java.security.cert.X509Certificate[] chain,        String authType)        throws java.security.cert.CertificateException {      }        @Override      public void checkServerTrusted(        java.security.cert.X509Certificate[] chain,        String authType)        throws java.security.cert.CertificateException {      }     };     sslContext.init(null, new TrustManager[] { tm }, null);    }      @Override    public Socket createSocket(Socket socket, String host, int port,      boolean autoClose) throws IOException, UnknownHostException {     return sslContext.getSocketFactory().createSocket(socket, host,       port, autoClose);    }      @Override    public Socket createSocket() throws IOException {     return sslContext.getSocketFactory().createSocket();    }   }  }






================2013 04 09 完全无其他依赖

package com.example.testbingtoken;    import java.io.ByteArrayOutputStream;  import java.io.DataOutputStream;  import java.io.File;  import java.io.FileInputStream;  import java.io.IOException;  import java.io.InputStream;  import java.io.OutputStream;  import java.net.HttpURLConnection;  import java.net.MalformedURLException;  import java.net.URL;  import java.security.KeyStore;  import java.util.ArrayList;  import java.util.HashMap;  import java.util.Map;  import java.util.UUID;    import org.apache.http.Header;  import org.apache.http.HttpEntity;  import org.apache.http.HttpResponse;  import org.apache.http.HttpStatus;  import org.apache.http.HttpVersion;  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.conn.ClientConnectionManager;  import org.apache.http.conn.ConnectTimeoutException;  import org.apache.http.conn.params.ConnManagerParams;  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.impl.client.DefaultHttpClient;  import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;  import org.apache.http.message.BasicHeader;  import org.apache.http.message.BasicNameValuePair;  import org.apache.http.params.BasicHttpParams;  import org.apache.http.params.HttpConnectionParams;  import org.apache.http.params.HttpParams;  import org.apache.http.params.HttpProtocolParams;  import org.apache.http.protocol.HTTP;  import org.apache.http.util.EntityUtils;    import android.content.Context;  import android.net.ConnectivityManager;  import android.net.NetworkInfo;  import android.util.Log;  import android.widget.Toast;    /**   * HttpUtil Class Capsule Most Functions of Http Operations   *    * @author sfshine   *    */  public class HttpUtil {   private static Header[] headers = new BasicHeader[1];   private static String TAG = "HTTPUTIL";   private static int TIMEOUT = 5 * 1000;   private static final String BOUNDARY = "---------------------------7db1c523809b2";   /**    * Your header of http op    *     * @return    */   static {      headers[0] = new BasicHeader("User-Agent",      "Mozilla/4.0 (compatible; MSIE 5.0; Windows XP; DigExt)");     }     public static boolean delete(String murl) throws Exception {    URL url = new URL(murl);    HttpURLConnection conn = (HttpURLConnection) url.openConnection();    conn.setRequestMethod("DELETE");    conn.setConnectTimeout(5000);    if (conn.getResponseCode() == 204) {       MLog.e(conn.toString());     return true;    }    MLog.e(conn.getRequestMethod());    MLog.e(conn.getResponseCode() + "");    return false;   }     /**    * Op Http get request    *     * @param url    * @param map    *            Values to request    * @return    */   static public String get(String url) {    return get(url, null);     }     static public String get(String url, HashMap<String, String> map) {      HttpClient client = new DefaultHttpClient();    HttpConnectionParams.setConnectionTimeout(client.getParams(), TIMEOUT);    HttpConnectionParams.setSoTimeout(client.getParams(), TIMEOUT);    ConnManagerParams.setTimeout(client.getParams(), TIMEOUT);    String result = "ERROR";    if (null != map) {     int i = 0;     for (Map.Entry<String, String> entry : map.entrySet()) {        Log.i(TAG, entry.getKey() + "=>" + entry.getValue());      if (i == 0) {       url = url + "?" + entry.getKey() + "=" + entry.getValue();      } else {       url = url + "&" + entry.getKey() + "=" + entry.getValue();      }        i++;       }    }    HttpGet get = new HttpGet(url);    get.setHeaders(headers);    Log.i(TAG, url);    try {       HttpResponse response = client.execute(get);       if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {      // setCookie(response);      result = EntityUtils.toString(response.getEntity(), "UTF-8");       } else {      result = EntityUtils.toString(response.getEntity(), "UTF-8")        + response.getStatusLine().getStatusCode() + "ERROR";     }      } catch (ConnectTimeoutException e) {     result = "TIMEOUTERROR";    }      catch (Exception e) {     result = "OTHERERROR";     e.printStackTrace();      }    Log.i(TAG, "result =>" + result);      return result;   }     /**    * Op Http post request , "404error" response if failed    *     * @param url    * @param map    *            Values to request    * @return    */     static public String post(String url, HashMap<String, String> map) {      HttpClient client = new DefaultHttpClient();    HttpConnectionParams.setConnectionTimeout(client.getParams(), TIMEOUT);    HttpConnectionParams.setSoTimeout(client.getParams(), TIMEOUT);    ConnManagerParams.setTimeout(client.getParams(), TIMEOUT);    HttpPost post = new HttpPost(url);    MLog.i(TAG, url);    post.setHeaders(headers);    String result = "ERROR";    ArrayList<BasicNameValuePair> pairList = new ArrayList<BasicNameValuePair>();    if (map != null) {     for (Map.Entry<String, String> entry : map.entrySet()) {      Log.i(TAG, entry.getKey() + "=>" + entry.getValue());      BasicNameValuePair pair = new BasicNameValuePair(        entry.getKey(), entry.getValue());      pairList.add(pair);     }      }    try {     HttpEntity entity = new UrlEncodedFormEntity(pairList, "UTF-8");     post.setEntity(entity);     HttpResponse response = client.execute(post);       if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {        result = EntityUtils.toString(response.getEntity(), "UTF-8");       } else {      result = EntityUtils.toString(response.getEntity(), "UTF-8")        + response.getStatusLine().getStatusCode() + "ERROR";     }      } catch (ConnectTimeoutException e) {     result = "TIMEOUTERROR";    }      catch (Exception e) {     result = "OTHERERROR";     e.printStackTrace();      }    Log.i(TAG, "result =>" + result);    return result;   }     /**    * 自定义的http请求可以设置为DELETE PUT等而不是GET    *     * @param url    * @param params    * @param method    * @throws IOException    */     public static String customrequest(String url,     HashMap<String, String> params, String method) {    try {       URL postUrl = new URL(url);     HttpURLConnection conn = (HttpURLConnection) postUrl       .openConnection();     conn.setDoOutput(true);     conn.setDoInput(true);     conn.setConnectTimeout(5 * 1000);       conn.setRequestMethod(method);     conn.setUseCaches(false);     conn.setInstanceFollowRedirects(true);     conn.setRequestProperty("Content-Type",       "application/x-www-form-urlencoded");     conn.setRequestProperty("User-Agent",       "Mozilla/4.0 (compatible; MSIE 5.0; Windows XP; DigExt)");       conn.connect();     OutputStream out = conn.getOutputStream();     StringBuilder sb = new StringBuilder();     if (null != params) {      int i = params.size();      for (Map.Entry<String, String> entry : params.entrySet()) {       if (i == 1) {        sb.append(entry.getKey() + "=" + entry.getValue());       } else {        sb.append(entry.getKey() + "=" + entry.getValue() + "&");       }         i--;      }     }     String content = sb.toString();     out.write(content.getBytes("UTF-8"));     out.flush();     out.close();     InputStream inStream = conn.getInputStream();     String result = inputStream2String(inStream);     Log.i(TAG, "result>" + result);     conn.disconnect();     return result;    } catch (Exception e) {     // TODO: handle exception    }    return null;   }     /**    * 必须严格限制get请求所以增加这个方法 这个方法也可以自定义请求    *     * @param url    * @param method    * @throws Exception    */     public static String customrequestget(String url,     HashMap<String, String> map, String method) {      if (null != map) {     int i = 0;     for (Map.Entry<String, String> entry : map.entrySet()) {        if (i == 0) {       url = url + "?" + entry.getKey() + "=" + entry.getValue();      } else {       url = url + "&" + entry.getKey() + "=" + entry.getValue();      }        i++;     }    }    try {       URL murl = new URL(url);     System.out.print(url);     HttpURLConnection conn = (HttpURLConnection) murl.openConnection();     conn.setConnectTimeout(5 * 1000);     conn.setRequestMethod(method);       conn.setRequestProperty("User-Agent",       "Mozilla/4.0 (compatible; MSIE 5.0; Windows XP; DigExt)");       InputStream inStream = conn.getInputStream();     String result = inputStream2String(inStream);     Log.i(TAG, "result>" + result);     conn.disconnect();     return result;    } catch (Exception e) {     // TODO: handle exception    }    return null;   }     /**    * 上传多张图片    */   public static void post(String actionUrl, Map<String, String> params,     Map<String, File> files) throws IOException {      String BOUNDARY = java.util.UUID.randomUUID().toString();    String PREFIX = "--", LINEND = "\r\n";    String MULTIPART_FROM_DATA = "multipart/form-data";    String CHARSET = "UTF-8";      URL uri = new URL(actionUrl);    HttpURLConnection conn = (HttpURLConnection) uri.openConnection();    conn.setReadTimeout(5 * 1000); // 缓存的最长时间    conn.setDoInput(true);// 允许输入    conn.setDoOutput(true);// 允许输出    conn.setUseCaches(false); // 不允许使用缓存    conn.setRequestMethod("POST");    conn.setRequestProperty("connection", "keep-alive");    conn.setRequestProperty("Charsert", "UTF-8");    conn.setRequestProperty("Content-Type", MULTIPART_FROM_DATA      + ";boundary=" + BOUNDARY);      // 首先组拼文本类型的参数    StringBuilder sb = new StringBuilder();    for (Map.Entry<String, String> entry : params.entrySet()) {     sb.append(PREFIX);     sb.append(BOUNDARY);     sb.append(LINEND);     sb.append("Content-Disposition: form-data; name=\""       + entry.getKey() + "\"" + LINEND);     sb.append("Content-Type: text/plain; charset=" + CHARSET + LINEND);     sb.append("Content-Transfer-Encoding: 8bit" + LINEND);     sb.append(LINEND);     sb.append(entry.getValue());     sb.append(LINEND);    }      DataOutputStream outStream = new DataOutputStream(      conn.getOutputStream());    outStream.write(sb.toString().getBytes());    InputStream in = null;    // 发送文件数据    if (files != null) {     for (Map.Entry<String, File> file : files.entrySet()) {        StringBuilder sb1 = new StringBuilder();      sb1.append(PREFIX);      sb1.append(BOUNDARY);      sb1.append(LINEND);      sb1.append("Content-Disposition: form-data; name=\"source\"; filename=\""        + file.getValue().getName() + "\"" + LINEND);      sb1.append("Content-Type: image/pjpeg; " + LINEND);      sb1.append(LINEND);      outStream.write(sb1.toString().getBytes());        InputStream is = new FileInputStream(file.getValue());      byte[] buffer = new byte[1024];      int len = 0;      while ((len = is.read(buffer)) != -1) {       outStream.write(buffer, 0, len);      }        is.close();      outStream.write(LINEND.getBytes());     }       // 请求结束标志     byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND).getBytes();     outStream.write(end_data);     outStream.flush();     // 得到响应码     int res = conn.getResponseCode();     // if (res == 200) {     in = conn.getInputStream();     int ch;     StringBuilder sb2 = new StringBuilder();     while ((ch = in.read()) != -1) {      sb2.append((char) ch);     }       // }     outStream.close();     conn.disconnect();    }    // return in.toString();     }     /**    * is转String    *     * @param in    * @return    * @throws IOException    */   public static String inputStream2String(InputStream in) throws IOException {    StringBuffer out = new StringBuffer();    byte[] b = new byte[4096];    for (int n; (n = in.read(b)) != -1;) {     out.append(new String(b, 0, n));    }    return out.toString();   }     /**    * check net work    *     * @param context    * @return    */   public static boolean hasNetwork(Context context) {    ConnectivityManager con = (ConnectivityManager) context      .getSystemService(Context.CONNECTIVITY_SERVICE);    NetworkInfo workinfo = con.getActiveNetworkInfo();    if (workinfo == null || !workinfo.isAvailable()) {     Toast.makeText(context, "当前无网络连接,请稍后重试", Toast.LENGTH_SHORT).show();     return false;    }    return true;   }     /***    * @category check if the string is null    * @return true if is null    * */   public static boolean isNull(String string) {    boolean t1 = "".equals(string);    boolean t2 = string == null;    boolean t3 = string.equals("null");    if (t1 || t2 || t3) {     return true;    } else {     return false;    }   }     static public byte[] getBytes(File file) throws IOException {    InputStream ios = null;    ByteArrayOutputStream ous = null;    try {     byte[] buffer = new byte[4096];     ous = new ByteArrayOutputStream();     ios = new FileInputStream(file);     int read = 0;     while ((read = ios.read(buffer)) != -1) {      ous.write(buffer, 0, read);     }    } finally {     try {      if (ous != null)       ous.close();     } catch (IOException e) {     }       try {      if (ios != null)       ios.close();     } catch (IOException e) {     }    }      return ous.toByteArray();   }     public static class MLog {    static public void e(String msg) {     android.util.Log.e("=======ERROR======", msg);    }      static public void e(String tag, String msg) {     android.util.Log.e(tag, msg);    }      static public void i(String msg) {     android.util.Log.i("=======INFO======", msg);    }      static public void i(String tag, String msg) {     android.util.Log.i(tag, msg);    }     }  }











package com.su.doubanrise.util;    import java.io.BufferedOutputStream;  import java.io.BufferedReader;  import java.io.ByteArrayOutputStream;  import java.io.DataOutputStream;  import java.io.File;  import java.io.FileInputStream;  import java.io.FileNotFoundException;  import java.io.IOException;  import java.io.InputStream;  import java.io.InputStreamReader;  import java.io.OutputStream;  import java.net.HttpURLConnection;  import java.net.InetAddress;  import java.net.Socket;  import java.net.SocketTimeoutException;  import java.net.URL;  import java.net.URLConnection;  import java.net.URLDecoder;  import java.util.ArrayList;  import java.util.HashMap;  import java.util.Iterator;  import java.util.Map;  import java.util.Set;    import org.apache.http.Header;  import org.apache.http.HttpEntity;  import org.apache.http.HttpResponse;  import org.apache.http.HttpStatus;  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.conn.ConnectTimeoutException;  import org.apache.http.conn.params.ConnManagerParams;  import org.apache.http.impl.client.DefaultHttpClient;  import org.apache.http.message.BasicHeader;  import org.apache.http.message.BasicNameValuePair;  import org.apache.http.params.HttpConnectionParams;  import org.apache.http.protocol.HTTP;  import org.apache.http.util.EntityUtils;    import android.content.Context;  import android.net.ConnectivityManager;  import android.net.NetworkInfo;  import android.util.Log;  import android.widget.Toast;    import com.su.doubanrise.api.Douban;  import com.su.doubanrise.api.bean.FormFile;    /**   * HttpUtil Class Capsule Most Functions of Http Operations   *    * @author sfshine   *    */  public class HttpUtil {     private static Header[] headers = new BasicHeader[11];   private static String TAG = "HTTPUTIL";   private static int TIMEOUT = 5 * 1000;   private static final String BOUNDARY = "---------------------------7db1c523809b2";   /**    * Your header of http op    */   static {    headers[0] = new BasicHeader("Authorization", "Bearer "      + Douban.getAccessToken());    headers[1] = new BasicHeader("Udid", "");    headers[2] = new BasicHeader("Os", "");    headers[3] = new BasicHeader("Osversion", "");    headers[4] = new BasicHeader("Appversion", "");    headers[5] = new BasicHeader("Sourceid", "");    headers[6] = new BasicHeader("Ver", "");    headers[7] = new BasicHeader("Userid", "");    headers[8] = new BasicHeader("Usersession", "");    headers[9] = new BasicHeader("Unique", "");    headers[10] = new BasicHeader("Cookie", "");   }     public static boolean delete(String murl) throws Exception {    URL url = new URL(murl);    HttpURLConnection conn = (HttpURLConnection) url.openConnection();    conn.setRequestMethod("DELETE");    conn.setConnectTimeout(5000);    if (conn.getResponseCode() == 204) {       MLog.e(conn.toString());     return true;    }    MLog.e(conn.getRequestMethod());    MLog.e(conn.getResponseCode() + "");    return false;   }     /**    * Op Http get request    *     * @param url    * @param map    *            Values to request    * @return    */   static public String get(String url) {    return get(url, null);     }     static public String get(String url, HashMap<String, String> map) {      DefaultHttpClient client = new DefaultHttpClient();    HttpConnectionParams.setConnectionTimeout(client.getParams(), TIMEOUT);    HttpConnectionParams.setSoTimeout(client.getParams(), TIMEOUT);    ConnManagerParams.setTimeout(client.getParams(), TIMEOUT);      MLog.e(headers[0] + "");    String result = "ERROR";    if (null != map) {     int i = 0;     for (Map.Entry<String, String> entry : map.entrySet()) {        Log.i(TAG, entry.getKey() + "=>" + entry.getValue());      if (i == 0) {       url = url + "?" + entry.getKey() + "=" + entry.getValue();      } else {       url = url + "&" + entry.getKey() + "=" + entry.getValue();      }        i++;       }    }    HttpGet get = new HttpGet(url);    get.setHeaders(headers);    Log.i(TAG, url);    try {       HttpResponse response = client.execute(get);       if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {      // setCookie(response);      result = EntityUtils.toString(response.getEntity(), "UTF-8");       } else {      result = EntityUtils.toString(response.getEntity(), "UTF-8")        + response.getStatusLine().getStatusCode() + "ERROR";     }      } catch (ConnectTimeoutException e) {     result = "TIMEOUTERROR";    }      catch (Exception e) {     result = "OTHERERROR";     e.printStackTrace();      }    Log.i(TAG, "result =>" + result);    return result;   }     /**    * 上传带图片的http请求    *     * @param murl网址    * @param map    *            参数对 主要不要包括图片    * @param path    *            图片路径 也可以是其他格式 自行做    * @return    * @throws Exception    */   static public String post(String murl, HashMap<String, String> map,     String path) throws Exception {    File file = new File(path);    String filename = path.substring(path.lastIndexOf("/"));    // String filename = Str.md5(path);    StringBuilder sb = new StringBuilder();    if (null != map) {     for (Map.Entry<String, String> entry : map.entrySet()) {      sb.append("--" + BOUNDARY + "\r\n");      sb.append("Content-Disposition: form-data; name=\""        + entry.getKey() + "\"" + "\r\n");      sb.append("\r\n");      sb.append(entry.getValue() + "\r\n");       }    }      sb.append("--" + BOUNDARY + "\r\n");    sb.append("Content-Disposition: form-data; name=\"image\"; filename=\""      + filename + "\"" + "\r\n");      sb.append("Content-Type: image/pjpeg" + "\r\n");    sb.append("\r\n");      byte[] before = sb.toString().getBytes("UTF-8");    byte[] after = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("UTF-8");      URL url = new URL(murl);    HttpURLConnection conn = (HttpURLConnection) url.openConnection();    conn.setRequestMethod("POST");    conn.setRequestProperty("Content-Type",      "multipart/form-data; boundary=" + BOUNDARY);      conn.setRequestProperty("Authorization",      "Bearer " + Douban.getAccessToken());    conn.setRequestProperty("Content-Length",      String.valueOf(before.length + file.length() + after.length));    conn.setRequestProperty("HOST", url.getHost());    conn.setDoOutput(true);      OutputStream out = conn.getOutputStream();    InputStream in = new FileInputStream(file);      out.write(before);      byte[] buf = new byte[1024];    int len;    while ((len = in.read(buf)) != -1)     out.write(buf, 0, len);      out.write(after);      in.close();    out.close();    MLog.i("result=>" + inputStream2String(conn.getInputStream()) + "");    if (conn.getResponseCode() == HttpStatus.SC_OK) {     return inputStream2String(conn.getInputStream());    } else {     return inputStream2String(conn.getInputStream()) + "Code"       + conn.getResponseCode();    }     }     /**    * is转String    *     * @param in    * @return    * @throws IOException    */   public static String inputStream2String(InputStream in) throws IOException {    StringBuffer out = new StringBuffer();    byte[] b = new byte[4096];    for (int n; (n = in.read(b)) != -1;) {     out.append(new String(b, 0, n));    }    return out.toString();   }     /**    * Op Http post request , "404error" response if failed    *     * @param url    * @param map    *            Values to request    * @return    */     static public String post(String url, HashMap<String, String> map) {      DefaultHttpClient client = new DefaultHttpClient();    HttpConnectionParams.setConnectionTimeout(client.getParams(), TIMEOUT);    HttpConnectionParams.setSoTimeout(client.getParams(), TIMEOUT);    ConnManagerParams.setTimeout(client.getParams(), TIMEOUT);    HttpPost post = new HttpPost(url);    Log.i(TAG, url);    MLog.e(headers[0] + "");    post.setHeaders(headers);    String result = "ERROR";    ArrayList<BasicNameValuePair> pairList = new ArrayList<BasicNameValuePair>();    if (map != null) {     for (Map.Entry<String, String> entry : map.entrySet()) {      Log.i(TAG, entry.getKey() + "=>" + entry.getValue());      BasicNameValuePair pair = new BasicNameValuePair(        entry.getKey(), entry.getValue());      pairList.add(pair);     }      }    try {     HttpEntity entity = new UrlEncodedFormEntity(pairList, "UTF-8");     post.setEntity(entity);     HttpResponse response = client.execute(post);       if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {        result = EntityUtils.toString(response.getEntity(), "UTF-8");       } else {      result = EntityUtils.toString(response.getEntity(), "UTF-8")        + response.getStatusLine().getStatusCode() + "ERROR";     }      } catch (ConnectTimeoutException e) {     result = "TIMEOUTERROR";    }      catch (Exception e) {     result = "OTHERERROR";     e.printStackTrace();      }    Log.i(TAG, "result =>" + result);    return result;   }     /**    * Post Bytes to Server    *     * @param url    * @param bytes    *            of text    * @return    */   public static String PostBytes(String url, byte[] bytes) {    try {     URL murl = new URL(url);     final HttpURLConnection con = (HttpURLConnection) murl       .openConnection();       con.setDoInput(true);     con.setDoOutput(true);     con.setUseCaches(false);       con.setRequestMethod("POST");     con.setRequestProperty("Connection", "Keep-Alive");     con.setRequestProperty("Charset", "UTF-8");     con.setRequestProperty("Content-Type", "text/html");     String cookie = headers[10].getValue();     if (!isNull(headers[10].getValue())) {      con.setRequestProperty("cookie", cookie);     }       con.setReadTimeout(TIMEOUT);     con.setConnectTimeout(TIMEOUT);     Log.i(TAG, url);     DataOutputStream dsDataOutputStream = new DataOutputStream(       con.getOutputStream());     dsDataOutputStream.write(bytes, 0, bytes.length);       dsDataOutputStream.close();     if (con.getResponseCode() == HttpStatus.SC_OK) {      InputStream isInputStream = con.getInputStream();      int ch;      StringBuffer buffer = new StringBuffer();      while ((ch = isInputStream.read()) != -1) {       buffer.append((char) ch);      }        Log.i(TAG, "GetDataFromServer>" + buffer.toString());        return buffer.toString();     } else {      return "404error";     }    } catch (SocketTimeoutException e) {     return "timeouterror";    } catch (IOException e) {     // TODO Auto-generated catch block     return "404error";    }   }     /**    * set Cookie    *     * @param response    */   private static void setCookie(HttpResponse response) {    if (response.getHeaders("Set-Cookie").length > 0) {     Log.d(TAG, response.getHeaders("Set-Cookie")[0].getValue());     headers[10] = new BasicHeader("Cookie",       response.getHeaders("Set-Cookie")[0].getValue());    }   }     /**    * check net work    *     * @param context    * @return    */   public static boolean hasNetwork(Context context) {    ConnectivityManager con = (ConnectivityManager) context      .getSystemService(Context.CONNECTIVITY_SERVICE);    NetworkInfo workinfo = con.getActiveNetworkInfo();    if (workinfo == null || !workinfo.isAvailable()) {     Toast.makeText(context, "当前无网络连接,请稍后重试", Toast.LENGTH_SHORT).show();     return false;    }    return true;   }     /***    * @category check if the string is null    * @return true if is null    * */   public static boolean isNull(String string) {    boolean t1 = "".equals(string);    boolean t2 = string == null;    boolean t3 = string.equals("null");    if (t1 || t2 || t3) {     return true;    } else {     return false;    }   }  }




2012 12 31 添加自定义的URLConnection请求版本

package com.su.doubanrise.util;    import java.io.BufferedOutputStream;  import java.io.BufferedReader;  import java.io.ByteArrayOutputStream;  import java.io.DataOutputStream;  import java.io.File;  import java.io.FileInputStream;  import java.io.FileNotFoundException;  import java.io.IOException;  import java.io.InputStream;  import java.io.InputStreamReader;  import java.io.OutputStream;  import java.net.HttpURLConnection;  import java.net.InetAddress;  import java.net.Socket;  import java.net.SocketTimeoutException;  import java.net.URL;  import java.net.URLConnection;  import java.net.URLDecoder;  import java.util.ArrayList;  import java.util.HashMap;  import java.util.Iterator;  import java.util.Map;  import java.util.Set;    import org.apache.http.Header;  import org.apache.http.HttpEntity;  import org.apache.http.HttpResponse;  import org.apache.http.HttpStatus;  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.conn.ConnectTimeoutException;  import org.apache.http.conn.params.ConnManagerParams;  import org.apache.http.impl.client.DefaultHttpClient;  import org.apache.http.message.BasicHeader;  import org.apache.http.message.BasicNameValuePair;  import org.apache.http.params.HttpConnectionParams;  import org.apache.http.protocol.HTTP;  import org.apache.http.util.EntityUtils;    import android.content.Context;  import android.net.ConnectivityManager;  import android.net.NetworkInfo;  import android.util.Log;  import android.widget.Toast;    import com.su.doubanrise.api.Douban;  import com.su.doubanrise.api.bean.FormFile;    /**   * HttpUtil Class Capsule Most Functions of Http Operations   *    * @author sfshine   *    */  public class HttpUtil {     private static Header[] headers = new BasicHeader[11];   private static String TAG = "HTTPUTIL";   private static int TIMEOUT = 5 * 1000;   private static final String BOUNDARY = "---------------------------7db1c523809b2";     /**    * 在第一次授权的时候可能头部是空需要调用这个方法初始化token    */   public static void initAfterAuth() {    headers[0] = new BasicHeader("Authorization", "Bearer "      + Douban.getAccessToken());     }     /**    * Your header of http op    *     * @return    */   static {    headers[0] = new BasicHeader("Authorization", "Bearer "      + Douban.getAccessToken());    // headers[0] = new BasicHeader("Authorization",    // Douban.getAccessToken());    headers[1] = new BasicHeader("Udid", "");    headers[2] = new BasicHeader("Os", "");    headers[3] = new BasicHeader("Osversion", "");    headers[4] = new BasicHeader("Appversion", "");    headers[5] = new BasicHeader("Sourceid", "");    headers[6] = new BasicHeader("Ver", "");    headers[7] = new BasicHeader("Userid", "");    headers[8] = new BasicHeader("Usersession", "");    headers[9] = new BasicHeader("Unique", "");    headers[10] = new BasicHeader("Cookie", "");   }     public static boolean delete(String murl) throws Exception {    URL url = new URL(murl);    HttpURLConnection conn = (HttpURLConnection) url.openConnection();    conn.setRequestMethod("DELETE");    conn.setConnectTimeout(5000);    if (conn.getResponseCode() == 204) {       MLog.e(conn.toString());     return true;    }    MLog.e(conn.getRequestMethod());    MLog.e(conn.getResponseCode() + "");    return false;   }     /**    * Op Http get request    *     * @param url    * @param map    *            Values to request    * @return    */   static public String get(String url) {    return get(url, null);     }     static public String get(String url, HashMap<String, String> map) {      DefaultHttpClient client = new DefaultHttpClient();    HttpConnectionParams.setConnectionTimeout(client.getParams(), TIMEOUT);    HttpConnectionParams.setSoTimeout(client.getParams(), TIMEOUT);    ConnManagerParams.setTimeout(client.getParams(), TIMEOUT);      MLog.e(headers[0] + "");    String result = "ERROR";    if (null != map) {     int i = 0;     for (Map.Entry<String, String> entry : map.entrySet()) {        Log.i(TAG, entry.getKey() + "=>" + entry.getValue());      if (i == 0) {       url = url + "?" + entry.getKey() + "=" + entry.getValue();      } else {       url = url + "&" + entry.getKey() + "=" + entry.getValue();      }        i++;       }    }    HttpGet get = new HttpGet(url);    get.setHeaders(headers);    Log.i(TAG, url);    try {       HttpResponse response = client.execute(get);       if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {      // setCookie(response);      result = EntityUtils.toString(response.getEntity(), "UTF-8");       } else {      result = EntityUtils.toString(response.getEntity(), "UTF-8")        + response.getStatusLine().getStatusCode() + "ERROR";     }      } catch (ConnectTimeoutException e) {     result = "TIMEOUTERROR";    }      catch (Exception e) {     result = "OTHERERROR";     e.printStackTrace();      }    Log.i(TAG, "result =>" + result);    return result;   }     /**    * 上传带图片的http请求    *     * @param murl网址    * @param map    *            参数对 主要不要包括图片    * @param path    *            图片路径 也可以是其他格式 自行做    * @return    * @throws Exception    */   static public String post(String murl, HashMap<String, String> map,     String path) throws Exception {    File file = new File(path);    String filename = path.substring(path.lastIndexOf("/"));    // String filename = Str.md5(path);    StringBuilder sb = new StringBuilder();    if (null != map) {     for (Map.Entry<String, String> entry : map.entrySet()) {      sb.append("--" + BOUNDARY + "\r\n");      sb.append("Content-Disposition: form-data; name=\""        + entry.getKey() + "\"" + "\r\n");      sb.append("\r\n");      sb.append(entry.getValue() + "\r\n");       }    }      sb.append("--" + BOUNDARY + "\r\n");    sb.append("Content-Disposition: form-data; name=\"image\"; filename=\""      + filename + "\"" + "\r\n");      sb.append("Content-Type: image/pjpeg" + "\r\n");    sb.append("\r\n");      byte[] before = sb.toString().getBytes("UTF-8");    byte[] after = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("UTF-8");      URL url = new URL(murl);    HttpURLConnection conn = (HttpURLConnection) url.openConnection();    conn.setRequestMethod("POST");    conn.setRequestProperty("Content-Type",      "multipart/form-data; boundary=" + BOUNDARY);      conn.setRequestProperty("Authorization",      "Bearer " + Douban.getAccessToken());    conn.setRequestProperty("Content-Length",      String.valueOf(before.length + file.length() + after.length));    conn.setRequestProperty("HOST", url.getHost());    conn.setDoOutput(true);      OutputStream out = conn.getOutputStream();    InputStream in = new FileInputStream(file);      out.write(before);      byte[] buf = new byte[1024];    int len;    while ((len = in.read(buf)) != -1)     out.write(buf, 0, len);      out.write(after);      in.close();    out.close();    MLog.i("result=>" + inputStream2String(conn.getInputStream()) + "");    if (conn.getResponseCode() == HttpStatus.SC_OK) {     return inputStream2String(conn.getInputStream());    } else {     return inputStream2String(conn.getInputStream()) + "Code"       + conn.getResponseCode();    }     }     /**    * is转String    *     * @param in    * @return    * @throws IOException    */   public static String inputStream2String(InputStream in) throws IOException {    StringBuffer out = new StringBuffer();    byte[] b = new byte[4096];    for (int n; (n = in.read(b)) != -1;) {     out.append(new String(b, 0, n));    }    return out.toString();   }     /**    * Op Http post request , "404error" response if failed    *     * @param url    * @param map    *            Values to request    * @return    */     static public String post(String url, HashMap<String, String> map) {      DefaultHttpClient client = new DefaultHttpClient();    HttpConnectionParams.setConnectionTimeout(client.getParams(), TIMEOUT);    HttpConnectionParams.setSoTimeout(client.getParams(), TIMEOUT);    ConnManagerParams.setTimeout(client.getParams(), TIMEOUT);    HttpPost post = new HttpPost(url);    Log.i(TAG, url);    MLog.e(headers[0] + "");    post.setHeaders(headers);    String result = "ERROR";    ArrayList<BasicNameValuePair> pairList = new ArrayList<BasicNameValuePair>();    if (map != null) {     for (Map.Entry<String, String> entry : map.entrySet()) {      Log.i(TAG, entry.getKey() + "=>" + entry.getValue());      BasicNameValuePair pair = new BasicNameValuePair(        entry.getKey(), entry.getValue());      pairList.add(pair);     }      }    try {     HttpEntity entity = new UrlEncodedFormEntity(pairList, "UTF-8");     post.setEntity(entity);     HttpResponse response = client.execute(post);       if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {        result = EntityUtils.toString(response.getEntity(), "UTF-8");       } else {      result = EntityUtils.toString(response.getEntity(), "UTF-8")        + response.getStatusLine().getStatusCode() + "ERROR";     }      } catch (ConnectTimeoutException e) {     result = "TIMEOUTERROR";    }      catch (Exception e) {     result = "OTHERERROR";     e.printStackTrace();      }    Log.i(TAG, "result =>" + result);    return result;   }     /**    * 自定义的http请求可以设置为DELETE PUT等而不是GET    *     * @param url    * @param params    * @param method    * @throws IOException    */     public static void customrequest(String url,     HashMap<String, String> params, String method) throws IOException {    URL postUrl = new URL(url);    HttpURLConnection conn = (HttpURLConnection) postUrl.openConnection();    conn.setDoOutput(true);    conn.setDoInput(true);    conn.setConnectTimeout(5 * 1000);    conn.setRequestProperty("Authorization",      "Bearer " + Douban.getAccessToken());    conn.setRequestMethod(method);    conn.setUseCaches(false);    conn.setInstanceFollowRedirects(true);    conn.setRequestProperty("Content-Type",      "application/x-www-form-urlencoded");    conn.connect();    OutputStream out = conn.getOutputStream();    StringBuilder sb = new StringBuilder();    if (null != params) {     int i = params.size();     for (Map.Entry<String, String> entry : params.entrySet()) {      if (i == 1) {       sb.append(entry.getKey() + "=" + entry.getValue());      } else {       sb.append(entry.getKey() + "=" + entry.getValue() + "&");      }        i--;     }    }    String content = sb.toString();    System.out.print(content);    out.write(content.getBytes("UTF-8"));    out.flush();    out.close();    InputStream inStream = conn.getInputStream();    String result = inputStream2String(inStream);    System.out.println(result);    conn.disconnect();   }     /**    * 豆瓣必须严格限制get请求所以增加这个方法 这个方法也可以自定义请求    *     * @param url    * @param method    * @throws Exception    */     public static void customrequestget(String url,     HashMap<String, String> map, String method) throws Exception {    if (null != map) {     int i = 0;     for (Map.Entry<String, String> entry : map.entrySet()) {        if (i == 0) {       url = url + "?" + entry.getKey() + "=" + entry.getValue();      } else {       url = url + "&" + entry.getKey() + "=" + entry.getValue();      }        i++;     }    }    URL murl = new URL(url);    System.out.print(url);    HttpURLConnection conn = (HttpURLConnection) murl.openConnection();    conn.setConnectTimeout(5 * 1000);    conn.setRequestMethod(method);    conn.setRequestProperty("Authorization",      "Bearer " + Douban.getAccessToken());    InputStream inStream = conn.getInputStream();    String result = inputStream2String(inStream);    System.out.println(result);    conn.disconnect();   }     /**    * Post Bytes to Server    *     * @param url    * @param bytes    *            of text    * @return    */   public static String PostBytes(String url, byte[] bytes) {    try {     URL murl = new URL(url);     final HttpURLConnection con = (HttpURLConnection) murl       .openConnection();       con.setDoInput(true);     con.setDoOutput(true);     con.setUseCaches(false);       con.setRequestMethod("POST");     con.setRequestProperty("Connection", "Keep-Alive");     con.setRequestProperty("Charset", "UTF-8");     con.setRequestProperty("Content-Type", "text/html");     String cookie = headers[10].getValue();     if (!isNull(headers[10].getValue())) {      con.setRequestProperty("cookie", cookie);     }       con.setReadTimeout(TIMEOUT);     con.setConnectTimeout(TIMEOUT);     Log.i(TAG, url);     DataOutputStream dsDataOutputStream = new DataOutputStream(       con.getOutputStream());     dsDataOutputStream.write(bytes, 0, bytes.length);       dsDataOutputStream.close();     if (con.getResponseCode() == HttpStatus.SC_OK) {      InputStream isInputStream = con.getInputStream();      int ch;      StringBuffer buffer = new StringBuffer();      while ((ch = isInputStream.read()) != -1) {       buffer.append((char) ch);      }        Log.i(TAG, "GetDataFromServer>" + buffer.toString());        return buffer.toString();     } else {      return "404error";     }    } catch (SocketTimeoutException e) {     return "timeouterror";    } catch (IOException e) {     // TODO Auto-generated catch block     return "404error";    }   }     /**    * set Cookie    *     * @param response    */   private static void setCookie(HttpResponse response) {    if (response.getHeaders("Set-Cookie").length > 0) {     Log.d(TAG, response.getHeaders("Set-Cookie")[0].getValue());     headers[10] = new BasicHeader("Cookie",       response.getHeaders("Set-Cookie")[0].getValue());    }   }     /**    * check net work    *     * @param context    * @return    */   public static boolean hasNetwork(Context context) {    ConnectivityManager con = (ConnectivityManager) context      .getSystemService(Context.CONNECTIVITY_SERVICE);    NetworkInfo workinfo = con.getActiveNetworkInfo();    if (workinfo == null || !workinfo.isAvailable()) {     Toast.makeText(context, "当前无网络连接,请稍后重试", Toast.LENGTH_SHORT).show();     return false;    }    return true;   }     /***    * @category check if the string is null    * @return true if is null    * */   public static boolean isNull(String string) {    boolean t1 = "".equals(string);    boolean t2 = string == null;    boolean t3 = string.equals("null");    if (t1 || t2 || t3) {     return true;    } else {     return false;    }   }  }