zoukankan      html  css  js  c++  java
  • 工具类通用http发送方法

    package com.jyc.common.utils.http;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.ConnectException;
    import java.net.SocketTimeoutException;
    import java.net.URL;
    import java.net.URLConnection;
    import java.security.cert.X509Certificate;
    import javax.net.ssl.HostnameVerifier;
    import javax.net.ssl.HttpsURLConnection;
    import javax.net.ssl.SSLContext;
    import javax.net.ssl.SSLSession;
    import javax.net.ssl.TrustManager;
    import javax.net.ssl.X509TrustManager;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import com.jyc.common.constant.Constants;

    /**
    * 通用http发送方法
    *
    * @author jianyongchao
    */
    public class HttpUtils
    {
    private static final Logger log = LoggerFactory.getLogger(HttpUtils.class);

    /**
    * 向指定 URL 发送GET方法的请求
    *
    * @param url 发送请求的 URL
    * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
    * @return 所代表远程资源的响应结果
    */
    public static String sendGet(String url, String param)
    {
    return sendGet(url, param, Constants.UTF8);
    }

    /**
    * 向指定 URL 发送GET方法的请求
    *
    * @param url 发送请求的 URL
    * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
    * @param contentType 编码类型
    * @return 所代表远程资源的响应结果
    */
    public static String sendGet(String url, String param, String contentType)
    {
    StringBuilder result = new StringBuilder();
    BufferedReader in = null;
    try
    {
    String urlNameString = url + "?" + param;
    log.info("sendGet - {}", urlNameString);
    URL realUrl = new URL(urlNameString);
    URLConnection connection = realUrl.openConnection();
    connection.setRequestProperty("accept", "*/*");
    connection.setRequestProperty("connection", "Keep-Alive");
    connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
    connection.connect();
    in = new BufferedReader(new InputStreamReader(connection.getInputStream(), contentType));
    String line;
    while ((line = in.readLine()) != null)
    {
    result.append(line);
    }
    log.info("recv - {}", result);
    }
    catch (ConnectException e)
    {
    log.error("调用HttpUtils.sendGet ConnectException, url=" + url + ",param=" + param, e);
    }
    catch (SocketTimeoutException e)
    {
    log.error("调用HttpUtils.sendGet SocketTimeoutException, url=" + url + ",param=" + param, e);
    }
    catch (IOException e)
    {
    log.error("调用HttpUtils.sendGet IOException, url=" + url + ",param=" + param, e);
    }
    catch (Exception e)
    {
    log.error("调用HttpsUtil.sendGet Exception, url=" + url + ",param=" + param, e);
    }
    finally
    {
    try
    {
    if (in != null)
    {
    in.close();
    }
    }
    catch (Exception ex)
    {
    log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
    }
    }
    return result.toString();
    }

    /**
    * 向指定 URL 发送POST方法的请求
    *
    * @param url 发送请求的 URL
    * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
    * @return 所代表远程资源的响应结果
    */
    public static String sendPost(String url, String param)
    {
    PrintWriter out = null;
    BufferedReader in = null;
    StringBuilder result = new StringBuilder();
    try
    {
    String urlNameString = url;
    log.info("sendPost - {}", urlNameString);
    URL realUrl = new URL(urlNameString);
    URLConnection conn = 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.setRequestProperty("Accept-Charset", "utf-8");
    conn.setRequestProperty("contentType", "utf-8");
    conn.setDoOutput(true);
    conn.setDoInput(true);
    out = new PrintWriter(conn.getOutputStream());
    out.print(param);
    out.flush();
    in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
    String line;
    while ((line = in.readLine()) != null)
    {
    result.append(line);
    }
    log.info("recv - {}", result);
    }
    catch (ConnectException e)
    {
    log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e);
    }
    catch (SocketTimeoutException e)
    {
    log.error("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e);
    }
    catch (IOException e)
    {
    log.error("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e);
    }
    catch (Exception e)
    {
    log.error("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e);
    }
    finally
    {
    try
    {
    if (out != null)
    {
    out.close();
    }
    if (in != null)
    {
    in.close();
    }
    }
    catch (IOException ex)
    {
    log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
    }
    }
    return result.toString();
    }

    public static String sendSSLPost(String url, String param)
    {
    StringBuilder result = new StringBuilder();
    String urlNameString = url + "?" + param;
    try
    {
    log.info("sendSSLPost - {}", urlNameString);
    SSLContext sc = SSLContext.getInstance("SSL");
    sc.init(null, new TrustManager[] { new TrustAnyTrustManager() }, new java.security.SecureRandom());
    URL console = new URL(urlNameString);
    HttpsURLConnection conn = (HttpsURLConnection) console.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.setRequestProperty("Accept-Charset", "utf-8");
    conn.setRequestProperty("contentType", "utf-8");
    conn.setDoOutput(true);
    conn.setDoInput(true);

    conn.setSSLSocketFactory(sc.getSocketFactory());
    conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
    conn.connect();
    InputStream is = conn.getInputStream();
    BufferedReader br = new BufferedReader(new InputStreamReader(is));
    String ret = "";
    while ((ret = br.readLine()) != null)
    {
    if (ret != null && !"".equals(ret.trim()))
    {
    result.append(new String(ret.getBytes("ISO-8859-1"), "utf-8"));
    }
    }
    log.info("recv - {}", result);
    conn.disconnect();
    br.close();
    }
    catch (ConnectException e)
    {
    log.error("调用HttpUtils.sendSSLPost ConnectException, url=" + url + ",param=" + param, e);
    }
    catch (SocketTimeoutException e)
    {
    log.error("调用HttpUtils.sendSSLPost SocketTimeoutException, url=" + url + ",param=" + param, e);
    }
    catch (IOException e)
    {
    log.error("调用HttpUtils.sendSSLPost IOException, url=" + url + ",param=" + param, e);
    }
    catch (Exception e)
    {
    log.error("调用HttpsUtil.sendSSLPost Exception, url=" + url + ",param=" + param, e);
    }
    return result.toString();
    }

    private static class TrustAnyTrustManager implements X509TrustManager
    {
    @Override
    public void checkClientTrusted(X509Certificate[] chain, String authType)
    {
    }

    @Override
    public void checkServerTrusted(X509Certificate[] chain, String authType)
    {
    }

    @Override
    public X509Certificate[] getAcceptedIssuers()
    {
    return new X509Certificate[] {};
    }
    }

    private static class TrustAnyHostnameVerifier implements HostnameVerifier
    {
    @Override
    public boolean verify(String hostname, SSLSession session)
    {
    return true;
    }
    }
    }
  • 相关阅读:
    STL 全排列
    Happy Programming Contest
    输入外挂
    Crazy Professor
    订票助手 12306
    我的e证空间 出入境证照可在家自拍啦!
    雨生红球藻 虾青素 寻找正规产品!
    CAR 汽车团购网站—广州
    3G路由器、无线接入点(无线AP)、无线路由器!
    微软 Lightswitch 发布 V2 Beta,引入新的逻辑层基础技术!
  • 原文地址:https://www.cnblogs.com/qq3245792286/p/15470211.html
Copyright © 2011-2022 走看看