Android HttpClient之Get和Set

public class CustomHttpClient {
    private static String TAG = "CustomHttpClient";
    private static final CommonLog log = LogFactory.createLog();
    private static final String CHARSET_UTF8 = HTTP.UTF_8;
    private static final String CHARSET_GB2312 = "GB2312";
    private static HttpClient customerHttpClient;

    private CustomHttpClient() {

    }

    /**
     * HttpClient post方法
     * 
     * @param url
     * @param nameValuePairs
     * @return
     */
    public static String PostFromWebByHttpClient(Context context, String url,
            NameValuePair... nameValuePairs) {
        try {
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            if (nameValuePairs != null) {
                for (int i = 0; i < nameValuePairs.length; i++) {
                    params.add(nameValuePairs[i]);
                }
            }
            UrlEncodedFormEntity urlEncoded = new UrlEncodedFormEntity(params,
                    CHARSET_UTF8);
            HttpPost httpPost = new HttpPost(url);
            httpPost.setEntity(urlEncoded);
            HttpClient client = getHttpClient(context);
            HttpResponse response = client.execute(httpPost);
            if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
                throw new RuntimeException("请求失败");
            }
            HttpEntity resEntity = response.getEntity();
            return (resEntity == null) ? null : EntityUtils.toString(resEntity,
                    CHARSET_UTF8);
        } catch (UnsupportedEncodingException e) {
            Log.w(TAG, e.getMessage());
            return null;
        } catch (ClientProtocolException e) {
            Log.w(TAG, e.getMessage());
            return null;
        } catch (IOException e) {
            throw new RuntimeException(context.getResources().getString(
                    R.string.httpError), e);
        } 
    }

    public static String getFromWebByHttpClient(Context context, String url,
            NameValuePair... nameValuePairs) throws Exception{
            log.d("getFromWebByHttpClient url = " + url);
        try {
            StringBuilder sb = new StringBuilder();
            sb.append(url);
            if (nameValuePairs != null && nameValuePairs.length > 0) {
                sb.append("?");
                for (int i = 0; i < nameValuePairs.length; i++) {
                    if (i > 0) {
                        sb.append("&");
                    }
                    sb.append(String.format("%s=%s",
                            nameValuePairs[i].getName(),
                            nameValuePairs[i].getValue()));
                }
            }
            // HttpGet连接对象
            HttpGet httpRequest = new HttpGet(sb.toString());
            // 取得HttpClient对象
            HttpClient httpclient = getHttpClient(context);
            // 请求HttpClient,取得HttpResponse
            HttpResponse httpResponse = httpclient.execute(httpRequest);
            // 请求成功
            if (httpResponse.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
                throw new RuntimeException(context.getResources().getString(
                        R.string.httpError));
            }
            return EntityUtils.toString(httpResponse.getEntity());
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            throw new RuntimeException(context.getResources().getString(
                    R.string.httpError),e);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            log.e("IOException ");
            e.printStackTrace();
            throw new RuntimeException(context.getResources().getString(
                    R.string.httpError),e);
        }     
    }

    /**
     * 创建httpClient实例
     * 
     * @return
     * @throws Exception
     */
    private static synchronized HttpClient getHttpClient(Context context) {
        if (null == customerHttpClient) {
            HttpParams params = new BasicHttpParams();
            // 设置一些基本参数
            HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
            HttpProtocolParams.setContentCharset(params, CHARSET_UTF8);
            HttpProtocolParams.setUseExpectContinue(params, true);
            HttpProtocolParams
                    .setUserAgent(
                            params,
                            "Mozilla/5.0(Linux;U;Android 2.2.1;en-us;Nexus One Build.FRG83) "
                                    + "AppleWebKit/553.1(KHTML,like Gecko) Version/4.0 Mobile Safari/533.1");
            // 超时设置
            /* 从连接池中取连接的超时时间 */
            ConnManagerParams.setTimeout(params, 1000);
            /* 连接超时 */
            int ConnectionTimeOut = 3000;
            if (!HttpUtils.isWifiDataEnable(context)) {
                ConnectionTimeOut = 10000;
            }
            HttpConnectionParams
                    .setConnectionTimeout(params, ConnectionTimeOut);
            /* 请求超时 */
            HttpConnectionParams.setSoTimeout(params, 4000);
            // 设置我们的HttpClient支持HTTP和HTTPS两种模式
            SchemeRegistry schReg = new SchemeRegistry();
            schReg.register(new Scheme("http", PlainSocketFactory
                    .getSocketFactory(), 80));
            schReg.register(new Scheme("https", SSLSocketFactory
                    .getSocketFactory(), 443));

            // 使用线程安全的连接管理来创建HttpClient
            ClientConnectionManager conMgr = new ThreadSafeClientConnManager(
                    params, schReg);
            customerHttpClient = new DefaultHttpClient(conMgr, params);
        }
        return customerHttpClient;
    }
}
原文地址:https://www.cnblogs.com/sishuiliuyun/p/3134975.html