欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

HTTP封装类 工具类 For Android,工具类android,============

来源: javaer 分享于  点击 37459 次 点评:246

HTTP封装类 工具类 For Android,工具类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 + "&amp;" + 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() + "&amp;");                    }                    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 + "&amp;" + 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 + "&amp;" + 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() + "&amp;");                    }                    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 + "&amp;" + 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 + "&amp;" + 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 + "&amp;" + 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() + "&amp;");                }                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 + "&amp;" + 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;        }    }}
相关栏目:

用户点评