zoukankan      html  css  js  c++  java
  • 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;
        }
    }
  • 相关阅读:
    Jetson Nano更改软件源
    树莓派开机启动VNC
    树莓派VNC复制粘贴
    数学之美-泰勒公式
    C++顺序容器
    eigen的简单用法汇总
    C++并发-同步并发
    C++ string类
    C++并发-互斥元
    Nginx常用命令
  • 原文地址:https://www.cnblogs.com/sishuiliuyun/p/3134975.html
Copyright © 2011-2022 走看看