package com.threeH.MyExhibition.tools; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.http.Header; import org.apache.http.HeaderElement; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.HttpVersion; import org.apache.http.NameValuePair; import org.apache.http.ParseException; import org.apache.http.client.ClientProtocolException; 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.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.entity.StringEntity; 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.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 org.json.JSONObject; import android.util.Log; public class CustomerHttpClient { private static final String CHARSET = HTTP.UTF_8; private static HttpClient customerHttpClient; private static final String TAG = "CustomerHttpClient"; private CustomerHttpClient() { } public static synchronized HttpClient getHttpClient() { if (customerHttpClient == null) { HttpParams params = new BasicHttpParams(); // 设置基本参数 HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); HttpProtocolParams.setContentCharset(params, CHARSET); 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); /* 连接超时 */ HttpConnectionParams.setConnectionTimeout(params, 2000); /* 请求超时 */ HttpConnectionParams.setSoTimeout(params, 4000); // 设置HttpClient支持HTTP和HTTPS两种模式 SchemeRegistry schReg = new SchemeRegistry(); schReg.register(new Scheme("http", PlainSocketFactory .getSocketFactory(), 80)); schReg.register(new Scheme("https", PlainSocketFactory .getSocketFactory(), 443)); // 使用线程安全的连接管理来创建HttpClient ClientConnectionManager conMgr = new ThreadSafeClientConnManager( params, schReg); customerHttpClient = new DefaultHttpClient(conMgr, params); } return customerHttpClient; } public static String post(String url, NameValuePair... params) { try { // 编码参数 List<NameValuePair> formparams = new ArrayList<NameValuePair>(); // 请求参数 for (NameValuePair p : params) { formparams.add(p); } UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams, CHARSET); // 创建POST请求 HttpPost request = new HttpPost(url); request.setEntity(entity); request.setHeader(HTTP.CONTENT_TYPE, "application/x-www-form-urlencoded;charset=UTF-8"); // 发送请求 HttpClient client = getHttpClient(); HttpResponse response = client.execute(request); HttpEntity resEntity = response.getEntity(); return (resEntity == null) ? null : EntityUtils.toString(resEntity, CHARSET); } catch (UnsupportedEncodingException e) { return null; } catch (ClientProtocolException e) { e.getMessage(); return null; } catch (IOException e) { System.out.println("链接失败"); throw new RuntimeException("连接失败", e); } } public static String postJson(String url, String jSonData) { HttpClient client = getHttpClient(); HttpResponse response; try { HttpPost post = new HttpPost(url); StringEntity se = new StringEntity(jSonData); se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); //se.setContentEncoding("UTF-8"); post.setEntity(se); response = client.execute(post); } catch (Exception e) { e.printStackTrace(); } return null; } public static String get(String url, Map<String, String> params) { String result = ""; StringBuilder urlBuilder = null; BufferedReader in = null; try { urlBuilder = new StringBuilder(); urlBuilder.append(url); if (null != params) { urlBuilder.append("?"); Iterator<Map.Entry<String, String>> iterator = params.entrySet() .iterator(); while (iterator.hasNext()) { Map.Entry<String, String> param = iterator.next(); urlBuilder .append(URLEncoder.encode(param.getKey(), "UTF-8")) .append('=') .append(URLEncoder.encode(param.getValue(), "UTF-8")); if (iterator.hasNext()) { urlBuilder.append('&'); } } } URL realUrl = new URL(urlBuilder.toString()); // 打开和URL之间的连接 HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection(); // 设置通用的请求属性 conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"); conn.setConnectTimeout(5000); conn.setRequestMethod("GET"); // 建立实际的连接 conn.connect(); // 获取所有响应头字段 Map<String, List<String>> map = conn.getHeaderFields(); // 遍历所有的响应头字段 // for (String key : map.keySet()) { // System.out.println(key + "--->" + map.get(key)); // } // 定义BufferedReader输入流来读取URL的响应 if (conn.getResponseCode() == 200) { in = new BufferedReader( new InputStreamReader(conn.getInputStream())); String line; while ((line = in.readLine()) != null) { result += "\n" + line; } } } catch (Exception e) { System.out.println("发送GET请求出现异常!" + e); e.printStackTrace(); } // 使用finally块来关闭输入流 finally { try { if (in != null) { in.close(); } } catch (IOException ex) { ex.printStackTrace(); } } return result; } // public static String put(String url,String data) { // String response = ""; // try { // URL mUrl = new URL(url); // HttpURLConnection connection = (HttpURLConnection) mUrl.openConnection(); // connection.setDoOutput(true); // connection.setRequestMethod("PUT"); // // connection.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"); // OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream()); // // writer.write(data); // // BufferedReader in = new BufferedReader( // new InputStreamReader(connection.getInputStream())); // String line; // while ((line = in.readLine()) != null) { // response += "\n" + line; // } // System.out.println(response); // writer.close(); // return response; // // } catch (UnsupportedEncodingException e) { // return null; // } catch (ClientProtocolException e) { // e.getMessage(); // return null; // } catch (IOException e) { // System.out.println("链接失败"); // throw new RuntimeException("连接失败", e); // } // // } /** * get请求 * * @param urlString * @param params * @return */ public static String getRequest(String urlString, Map<String, String> params) { try { StringBuilder urlBuilder = new StringBuilder(); urlBuilder.append(urlString); if (null != params) { urlBuilder.append("?"); Iterator<Map.Entry<String, String>> iterator = params.entrySet() .iterator(); while (iterator.hasNext()) { Map.Entry<String, String> param = iterator.next(); urlBuilder .append(URLEncoder.encode(param.getKey(), "UTF-8")) .append('=') .append(URLEncoder.encode(param.getValue(), "UTF-8")); if (iterator.hasNext()) { urlBuilder.append('&'); } } } // 创建HttpClient对象 HttpClient client = new DefaultHttpClient(); // 发送get请求创建HttpGet对象 HttpGet getMethod = new HttpGet(urlBuilder.toString()); HttpResponse response = client.execute(getMethod); // 获取状态码 int res = response.getStatusLine().getStatusCode(); System.out.println("res======" + res); if (res >= 200 && res < 400) { StringBuilder builder = new StringBuilder(); // 获取响应内容 BufferedReader reader = new BufferedReader( new InputStreamReader(response.getEntity().getContent())); for (String s = reader.readLine(); s != null; s = reader .readLine()) { builder.append(s); } return builder.toString(); } } catch (Exception e) { e.getMessage(); System.out.println("211313=======" + e.getMessage()); } return null; } }