package com.mfh.comna.bizz; import java.net.SocketException; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; 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.impl.client.DefaultHttpClient; import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager; import org.apache.http.message.BasicNameValuePair; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.HttpConnectionParams; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; public class HttpHelper { private static DefaultHttpClient httpClient = null; private static final int HTTP_REQUEST_TIMEOUT_MS = 20 * 1000; private static final int IO_BUFFER_SIZE = 8 * 1024; public static final String UTF_8 = "UTF-8"; private static HttpClient getHttpClient() throws Exception { if (httpClient != null) { return httpClient; } /*HttpParams params = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(params, HTTP_REQUEST_TIMEOUT_MS); HttpConnectionParams.setSoTimeout(params, HTTP_REQUEST_TIMEOUT_MS); HttpConnectionParams.setSocketBufferSize(params, IO_BUFFER_SIZE); HttpClientParams.setRedirecting(params, true); httpClient = new DefaultHttpClient(params); return httpClient;*/ BasicHttpParams basicHttpParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(basicHttpParams, HTTP_REQUEST_TIMEOUT_MS); HttpConnectionParams.setSoTimeout(basicHttpParams, HTTP_REQUEST_TIMEOUT_MS); ConnManagerParams.setTimeout(basicHttpParams, HTTP_REQUEST_TIMEOUT_MS); SchemeRegistry localSchemeRegistry = new SchemeRegistry(); localSchemeRegistry.register(new Scheme("http", PlainSocketFactory .getSocketFactory(), 80)); localSchemeRegistry.register(new Scheme("https", PlainSocketFactory .getSocketFactory(), 443)); httpClient = new DefaultHttpClient(new ThreadSafeClientConnManager( basicHttpParams, localSchemeRegistry), basicHttpParams); return httpClient; } public static String doPost(Map<String,Object> jsonInfo,String url) throws Exception { HttpClient client = null; try { client = getHttpClient(); } catch (Exception e1) { e1.printStackTrace(); return ""; } try{ // 创建HttpPost对象。 HttpPost httpRequest = new HttpPost(url); System.out.println("登录====="+url); // 如果传递参数个数比较多的话可以对传递的参数进行封装 List<NameValuePair> params = new ArrayList<NameValuePair>(); for(String key : jsonInfo.keySet()){ //封装请求参数 params.add(new BasicNameValuePair(key , (String) jsonInfo.get(key))); } // 设置请求参数 httpRequest.setEntity(new UrlEncodedFormEntity( params,HTTP.UTF_8)); System.out.println("登录参数====="+params); // 发送POST请求 HttpResponse httpResponse = client.execute(httpRequest); System.out.println("登录信息====="+httpResponse.getStatusLine().getStatusCode()); if (httpResponse.getStatusLine().getStatusCode() != HttpStatus.SC_OK) { httpRequest.abort(); } HttpEntity entity = httpResponse.getEntity(); return EntityUtils.toString(entity, "utf-8").trim(); }catch (SocketException e) { System.out.println(e.getMessage()); System.out.println("SocketException error"); e.getStackTrace(); throw new Exception("aa"); } catch (Exception e) { e.getStackTrace(); throw new Exception("aa"); } finally { if (client != null) { // client.getConnectionManager().closeExpiredConnections(); //client.getConnectionManager().shutdown(); } } } }