欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

使用java发送https的请求,java发送https,import java.

来源: javaer 分享于  点击 14595 次 点评:287

使用java发送https的请求,java发送https,import java.


import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.URL;import java.security.cert.CertificateException;import java.util.Map;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 java.security.cert.X509Certificate;public class HttpsGetData {    private static class TrustAnyTrustManager implements X509TrustManager {        public void checkClientTrusted(X509Certificate[] chain, String authType)                throws CertificateException {        }        public void checkServerTrusted(X509Certificate[] chain, String authType)                throws CertificateException {        }        public X509Certificate[] getAcceptedIssuers() {            return new X509Certificate[] {};        }    }    private static class TrustAnyHostnameVerifier implements HostnameVerifier {        public boolean verify(String hostname, SSLSession session) {            return true;        }    }    String _url="";    Map<String,String> _params;    public HttpsGetData(String url,Map<String,String> keyValueParams)    {        this._url=url;        this._params=keyValueParams;    }    public String Do() throws Exception    {         String result = "";         BufferedReader in = null;            try {                String urlStr = this._url + "&amp;" + getParamStr();                System.out.println("GET请求的URL为:"+urlStr);                SSLContext sc = SSLContext.getInstance("SSL");                sc.init(null, new TrustManager[] { new TrustAnyTrustManager() },                         new java.security.SecureRandom());                URL realUrl = new URL(urlStr);                // 打开和URL之间的连接                HttpsURLConnection connection = (HttpsURLConnection) realUrl.openConnection();                //设置https相关属性                connection.setSSLSocketFactory(sc.getSocketFactory());                connection.setHostnameVerifier(new TrustAnyHostnameVerifier());                connection.setDoOutput(true);                // 设置通用的请求属性                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();                // 定义 BufferedReader输入流来读取URL的响应                in = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));                String line;                while ((line = in.readLine()) != null) {                    result += line;                }                System.out.println("获取的结果为:"+result);            } catch (Exception e) {                System.out.println("发送GET请求出现异常!" + e);                //e.printStackTrace();                throw e;            }            // 使用finally块来关闭输入流            finally {                try {                    if (in != null) {                        in.close();                    }                } catch (Exception e2) {                    //e2.printStackTrace();                    throw e2;                }            }            return result;    }    private String getParamStr()    {        String paramStr="";        // 获取所有响应头字段        Map<String, String> params = this._params;        // 获取参数列表组成参数字符串        for (String key : params.keySet()) {            paramStr+=key+"="+params.get(key)+"&amp;";        }        //去除最后一个"&amp;"        paramStr=paramStr.substring(0, paramStr.length()-1);        return paramStr;    }}
相关栏目:

用户点评