httpclient4 实现http协议post、get类型接口调用

代码如下,不支持https
以下代码不支持https

import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.ParseException;
import org.apache.http.StatusLine;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.apache.log4j.Logger;
import org.json.JSONObject;
import org.json.JSONTokener;

public class HttpRequest
{
  private static Logger log = Logger.getLogger(HttpRequest.class);
  
  public JSONObject dopost(String url, JSONObject jsonobject)
  {
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httpost = new HttpPost(url);
    JSONObject response = null;
    try
    {
      StringEntity sEntity = new StringEntity(jsonobject.toString());
      sEntity.setContentEncoding("UTF-8");
      sEntity.setContentType("application/json");
      httpost.setEntity(sEntity);
      HttpResponse httpResponse = httpclient.execute(httpost);
      if (httpResponse.getStatusLine().getStatusCode() == 200)
      {
        response = new JSONObject(new JSONTokener(new InputStreamReader(httpResponse.getEntity().getContent())));
        log.info(response);
      }
      else
      {
        log.info(Integer.valueOf(httpResponse.getStatusLine().getStatusCode()));
      }
    }
    catch (Exception e)
    {
      throw new RuntimeException(e);
    }
    return response;
  }
  
  public JSONObject dopost(String url, JSONObject jsonobject, Map<String, Object> params)
  {
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httpost = null;
    JSONObject response = null;
    Iterator<Map.Entry<String, Object>> it = params.entrySet().iterator();
    try
    {
      if (params.size() == 0) {
        return response;
      }
      if (params.size() == 1)
      {
        Map.Entry<String, Object> entry = (Map.Entry)it.next();
        url = url + "?" + (String)entry.getKey() + "=" + entry.getValue().toString();
        httpost = new HttpPost(url);
      }
      else
      {
        url = url + "?";
        while (it.hasNext())
        {
          Map.Entry<String, Object> entry = (Map.Entry)it.next();
          url = url + (String)entry.getKey() + "=" + entry.getValue().toString() + "&";
        }
        url = url.substring(0, new StringBuffer(url).length() - 1);
        httpost = new HttpPost(url);
      }
    }
    catch (ParseException e)
    {
      e.printStackTrace();
    }
    try
    {
      StringEntity sEntity = new StringEntity(jsonobject.toString());
      sEntity.setContentEncoding("UTF-8");
      sEntity.setContentType("application/json");
      httpost.setEntity(sEntity);
      HttpResponse httpResponse = httpclient.execute(httpost);
      if (httpResponse.getStatusLine().getStatusCode() == 200)
      {
        response = new JSONObject(new JSONTokener(new InputStreamReader(httpResponse.getEntity().getContent())));
        log.info(response);
      }
      else
      {
        log.info(Integer.valueOf(httpResponse.getStatusLine().getStatusCode()));
      }
    }
    catch (Exception e)
    {
      throw new RuntimeException(e);
    }
    return response;
  }
  
  public JSONObject dopost(String url, Map<String, Object> params)
  {
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httpost = null;
    JSONObject response = null;
    Iterator<Map.Entry<String, Object>> it = params.entrySet().iterator();
    try
    {
      if (params.size() == 0) {
        return response;
      }
      if (params.size() == 1)
      {
        Map.Entry<String, Object> entry = (Map.Entry)it.next();
        url = url + "?" + (String)entry.getKey() + "=" + entry.getValue().toString();
        httpost = new HttpPost(url);
      }
      else
      {
        url = url + "?";
        while (it.hasNext())
        {
          Map.Entry<String, Object> entry = (Map.Entry)it.next();
          url = url + (String)entry.getKey() + "=" + entry.getValue().toString() + "&";
        }
        url = url.substring(0, new StringBuffer(url).length() - 1);
        httpost = new HttpPost(url);
      }
    }
    catch (ParseException e)
    {
      e.printStackTrace();
    }
    try
    {
      StringEntity sEntity = new StringEntity("");
      sEntity.setContentEncoding("UTF-8");
      sEntity.setContentType("application/json");
      httpost.setEntity(sEntity);
      HttpResponse httpResponse = httpclient.execute(httpost);
      if (httpResponse.getStatusLine().getStatusCode() == 200)
      {
        response = new JSONObject(new JSONTokener(new InputStreamReader(httpResponse.getEntity().getContent())));
        log.info(response);
      }
      else
      {
        log.info(Integer.valueOf(httpResponse.getStatusLine().getStatusCode()));
      }
    }
    catch (Exception e)
    {
      throw new RuntimeException(e);
    }
    return response;
  }
  
  public String doget(String url, Map<String, Object> params)
  {
    CloseableHttpClient httpClient = HttpClients.createDefault();
    Iterator<Map.Entry<String, Object>> it = params.entrySet().iterator();
    HttpResponse response = null;
    HttpGet httpGet = null;
    String json = null;
    try
    {
      if (params.size() == 0)
      {
        httpGet = new HttpGet(url);
      }
      else if (params.size() == 1)
      {
        Map.Entry<String, Object> entry = (Entry<String, Object>)it.next();
        url = url + "?" + (String)entry.getKey() + "=" + entry.getValue().toString();
        httpGet = new HttpGet(url);
      }
      else
      {
        url = url + "?";
        while (it.hasNext())
        {
          Map.Entry<String, Object> entry = (Entry<String, Object>)it.next();
          url = url + (String)entry.getKey() + "=" + entry.getValue().toString() + "&";
        }
        url = url.substring(0, new StringBuffer(url).length() - 1);
        httpGet = new HttpGet(url);
      }
      log.info(httpGet.getURI());
      response = httpClient.execute(httpGet);
      HttpEntity entity = response.getEntity();
      if (entity != null)
      {
    	  json=EntityUtils.toString(response.getEntity(), "utf-8");
      }
    }
    catch (ParseException e)
    {
    	log.debug(e.getMessage());
      e.printStackTrace();
    }
    catch (IOException e)
    {
    	log.debug(e.getMessage());
      e.printStackTrace();
    }
    return json;
  }
  
  public String doget(String url, Map<String, Object> params,Map<String, String> headers)
  {
    CloseableHttpClient httpClient = HttpClients.createDefault();
    Iterator<Map.Entry<String, Object>> it = params.entrySet().iterator();
    HttpResponse response = null;
    HttpGet httpGet = null;
    String json = null;
    try
    {
      if (params.size() == 0)
      {
        httpGet = new HttpGet(url);
      }
      else if (params.size() == 1)
      {
        Map.Entry<String, Object> entry = (Entry<String, Object>)it.next();
        url = url + "?" + (String)entry.getKey() + "=" + entry.getValue().toString();
        httpGet = new HttpGet(url);
      }
      else
      {
        url = url + "?";
        while (it.hasNext())
        {
          Map.Entry<String, Object> entry = (Entry<String, Object>)it.next();
          url = url + (String)entry.getKey() + "=" + entry.getValue().toString() + "&";
        }
        url = url.substring(0, new StringBuffer(url).length() - 1);
        httpGet = new HttpGet(url);
      }
      log.info("URL="+httpGet.getURI());
      for(Map.Entry<String, String> e : headers.entrySet()){
      	httpGet.addHeader(e.getKey(),e.getValue());
      }
      response = httpClient.execute(httpGet);
      HttpEntity entity = response.getEntity();
      if (entity != null)
      {
    	  json=EntityUtils.toString(response.getEntity(), "utf-8");
      }
    }
    catch (ParseException e)
    {
    	//log.debug(e.getMessage());
      e.printStackTrace();
    }
    catch (IOException e)
    {
    	//log.debug(e.getMessage());
      e.printStackTrace();
    }
    return json;
  }
  
  public StatusLine getStatus(String flag,String url, Map<String, Object> params,Map<String, String> headers){
    CloseableHttpClient httpClient = HttpClients.createDefault();
    Iterator<Map.Entry<String, Object>> it = params.entrySet().iterator();
    HttpResponse response = null;
    HttpGet httpGet = null;
    HttpPost httpPost=null;
    String json = null;
    StatusLine sl=null;
    if(flag.equals("GET")){
    try
    {
      if (params.size() == 0)
      {
        httpGet = new HttpGet(url);
      }
      else if (params.size() == 1)
      {
        Map.Entry<String, Object> entry = (Entry<String, Object>)it.next();
        url = url + "?" + (String)entry.getKey() + "=" + entry.getValue().toString();
        httpGet = new HttpGet(url);
      }
      else
      {
        url = url + "?";
        while (it.hasNext())
        {
          Map.Entry<String, Object> entry = (Entry<String, Object>)it.next();
          url = url + (String)entry.getKey() + "=" + entry.getValue().toString() + "&";
        }
        url = url.substring(0, new StringBuffer(url).length() - 1);
        httpGet = new HttpGet(url);
      }
      log.info("URL="+httpGet.getURI());
      for(Map.Entry<String, String> e : headers.entrySet()){
      	httpGet.addHeader(e.getKey(),e.getValue());
      }
      response = httpClient.execute(httpGet);
      sl=response.getStatusLine();
    }catch (Exception e){
    	e.printStackTrace();
    }
    }
    else if(flag.equals("POST")){
    	
    }
    return sl;
  }
  public static void main(String[] args) {}
}

以下代码支持https协议
package UDS.UdsTest.comme;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.conn.ClientConnectionManager;
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.entity.ByteArrayEntity;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

public class HttpUtils {

/**
 * get
 * 
 * @param host
 * @param path
 * @param method
 * @param headers
 * @param querys
 * @return
 * @throws Exception
 */
public static HttpResponse doGet(String host, String path,Map<String, String> headers,Map<String, String> querys){    	
	HttpClient httpClient = wrapClient(host);
	HttpGet request=null;
	HttpResponse response=null;
	try {
		request = new HttpGet(buildUrl(host, path, querys));
		response=httpClient.execute(request);
	} catch (Exception e1) {
		e1.printStackTrace();
	}
    for (Map.Entry<String, String> e : headers.entrySet()) {
    	request.addHeader(e.getKey(), e.getValue());
    }
    
    return response;
}

/**
 * post form
 * 
 * @param host
 * @param path
 * @param method
 * @param headers
 * @param querys
 * @param bodys
 * @return
 * @throws Exception
 */
public static HttpResponse doPost(String host, String path, String method, 
		Map<String, String> headers, 
		Map<String, String> querys, 
		Map<String, String> bodys)
        throws Exception {    	
	HttpClient httpClient = wrapClient(host);

	HttpPost request = new HttpPost(buildUrl(host, path, querys));
    for (Map.Entry<String, String> e : headers.entrySet()) {
    	request.addHeader(e.getKey(), e.getValue());
    }

    if (bodys != null) {
        List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();

        for (String key : bodys.keySet()) {
            nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key)));
        }
        UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8");
        formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
        request.setEntity(formEntity);
    }

    return httpClient.execute(request);
}	

/**
 * Post String
 * 
 * @param host
 * @param path
 * @param method
 * @param headers
 * @param querys
 * @param body
 * @return
 * @throws Exception
 */
public static HttpResponse doPost(String host, String path, String method, 
		Map<String, String> headers, 
		Map<String, String> querys, 
		String body)
        throws Exception {    	
	HttpClient httpClient = wrapClient(host);

	HttpPost request = new HttpPost(buildUrl(host, path, querys));
    for (Map.Entry<String, String> e : headers.entrySet()) {
    	request.addHeader(e.getKey(), e.getValue());
    }

    if (StringUtils.isNotBlank(body)) {
    	request.setEntity(new StringEntity(body, "utf-8"));
    }

    return httpClient.execute(request);
}

/**
 * Post stream
 * 
 * @param host
 * @param path
 * @param method
 * @param headers
 * @param querys
 * @param body
 * @return
 * @throws Exception
 */
public static HttpResponse doPost(String host, String path, String method, 
		Map<String, String> headers, 
		Map<String, String> querys, 
		byte[] body)
        throws Exception {    	
	HttpClient httpClient = wrapClient(host);

	HttpPost request = new HttpPost(buildUrl(host, path, querys));
    for (Map.Entry<String, String> e : headers.entrySet()) {
    	request.addHeader(e.getKey(), e.getValue());
    }

    if (body != null) {
    	request.setEntity(new ByteArrayEntity(body));
    }

    return httpClient.execute(request);
}

/**
 * Put String
 * @param host
 * @param path
 * @param method
 * @param headers
 * @param querys
 * @param body
 * @return
 * @throws Exception
 */
public static HttpResponse doPut(String host, String path, String method, 
		Map<String, String> headers, 
		Map<String, String> querys, 
		String body)
        throws Exception {    	
	HttpClient httpClient = wrapClient(host);

	HttpPut request = new HttpPut(buildUrl(host, path, querys));
    for (Map.Entry<String, String> e : headers.entrySet()) {
    	request.addHeader(e.getKey(), e.getValue());
    }

    if (StringUtils.isNotBlank(body)) {
    	request.setEntity(new StringEntity(body, "utf-8"));
    }

    return httpClient.execute(request);
}

/**
 * Put stream
 * @param host
 * @param path
 * @param method
 * @param headers
 * @param querys
 * @param body
 * @return
 * @throws Exception
 */
public static HttpResponse doPut(String host, String path, String method, 
		Map<String, String> headers, 
		Map<String, String> querys, 
		byte[] body)
        throws Exception {    	
	HttpClient httpClient = wrapClient(host);

	HttpPut request = new HttpPut(buildUrl(host, path, querys));
    for (Map.Entry<String, String> e : headers.entrySet()) {
    	request.addHeader(e.getKey(), e.getValue());
    }

    if (body != null) {
    	request.setEntity(new ByteArrayEntity(body));
    }

    return httpClient.execute(request);
}

/**
 * Delete
 *  
 * @param host
 * @param path
 * @param method
 * @param headers
 * @param querys
 * @return
 * @throws Exception
 */
public static HttpResponse doDelete(String host, String path, String method, 
		Map<String, String> headers, 
		Map<String, String> querys)
        throws Exception {    	
	HttpClient httpClient = wrapClient(host);

	HttpDelete request = new HttpDelete(buildUrl(host, path, querys));
    for (Map.Entry<String, String> e : headers.entrySet()) {
    	request.addHeader(e.getKey(), e.getValue());
    }
    
    return httpClient.execute(request);
}

private static String buildUrl(String host, String path, Map<String, String> querys) throws UnsupportedEncodingException {
	StringBuilder sbUrl = new StringBuilder();
	sbUrl.append(host);
	if (!StringUtils.isBlank(path)) {
		sbUrl.append(path);
    }
	if (null != querys) {
		StringBuilder sbQuery = new StringBuilder();
    	for (Map.Entry<String, String> query : querys.entrySet()) {
    		if (0 < sbQuery.length()) {
    			sbQuery.append("&");
    		}
    		if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) {
    			sbQuery.append(query.getValue());
            }
    		if (!StringUtils.isBlank(query.getKey())) {
    			sbQuery.append(query.getKey());
    			if (!StringUtils.isBlank(query.getValue())) {
    				sbQuery.append("=");
    				sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8"));
    			}        			
            }
    	}
    	if (0 < sbQuery.length()) {
    		sbUrl.append("?").append(sbQuery);
    	}
    }
	
	return sbUrl.toString();
}

private static HttpClient wrapClient(String host) {
	HttpClient httpClient = new DefaultHttpClient();
	if (host.startsWith("https://")) {
		sslClient(httpClient);
	}		
	return httpClient;
}

private static void sslClient(HttpClient httpClient) {
    try {
        SSLContext ctx = SSLContext.getInstance("TLS");
        X509TrustManager tm = new X509TrustManager() {
            public X509Certificate[] getAcceptedIssuers() {
                return null;
            }
            public void checkClientTrusted(X509Certificate[] xcs, String str) {
            	
            }
            public void checkServerTrusted(X509Certificate[] xcs, String str) {
            	
            }
        };
        ctx.init(null, new TrustManager[] { tm }, null);
        SSLSocketFactory ssf = new SSLSocketFactory(ctx);
        ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
        ClientConnectionManager ccm = httpClient.getConnectionManager();
        SchemeRegistry registry = ccm.getSchemeRegistry();
        registry.register(new Scheme("https", 443, ssf));
    } catch (KeyManagementException ex) {
        throw new RuntimeException(ex);
    } catch (NoSuchAlgorithmException ex) {
    	throw new RuntimeException(ex);
    }
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈希哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值