zoukankan      html  css  js  c++  java
  • httpclient4 实现http协议post、get类型接口调用

    代码如下,不支持https

    package UDS.UdsTest.comme;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.Set;
    import org.apache.http.Consts;
    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);
    }



    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);
    }
    }
    }

  • 相关阅读:
    Sonar+IDEA + Maven的集成
    My97DatePicker IE9中,显示全部为1
    Datatable+jeditable+Java 结合使用实现表格的单行刷新
    Datatables表格控件的使用相关网站及遇到的问题
    xss 小练习
    主页面布局 随浏览器大小变化而变化
    使用angular中自定义的directive实现删除确认框
    使用css和js完成模态弹窗功能
    ckplayer插件的使用
    使用JQuery进行表格分页查询
  • 原文地址:https://www.cnblogs.com/shuyichao/p/10384728.html
Copyright © 2011-2022 走看看