您的位置:首页 > 理论基础 > 计算机网络

java发送https post请求实例

2017-10-13 16:38 507 查看
用于进行Https请求的HttpClient 

SSLClient.Java

 

[java] view plain copy

import java.security.cert.CertificateException;  

import java.security.cert.X509Certificate;  

  

import javax.net.ssl.SSLContext;  

import javax.net.ssl.TrustManager;  

import javax.net.ssl.X509TrustManager;  

  

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.impl.client.DefaultHttpClient;  

  

//用于进行Https请求的HttpClient    

public class SSLClient extends DefaultHttpClient {  

    public SSLClient() throws Exception {  

        super();  

        SSLContext ctx = SSLContext.getInstance("TLS");  

        X509TrustManager tm = new X509TrustManager() {  

            @Override  

            public void checkClientTrusted(X509Certificate[] chain,  

                    String authType) throws CertificateException {  

            }  

  

            @Override  

            public void checkServerTrusted(X509Certificate[] chain,  

                    String authType) throws CertificateException {  

            }  

  

            @Override  

            public X509Certificate[] getAcceptedIssuers() {  

                return null;  

            }  

        };  

        ctx.init(null, new TrustManager[] { tm }, null);  

        SSLSocketFactory ssf = new SSLSocketFactory(ctx,  

                SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);  

        ClientConnectionManager ccm = this.getConnectionManager();  

        SchemeRegistry sr = ccm.getSchemeRegistry();  

        sr.register(new Scheme("https", 443, ssf));  

    }  

}  

利用HttpClient进行post请求的工具类 

 

HttpClientUtil.java

 

[java] view plain copy

import java.util.ArrayList;  

import java.util.Iterator;  

import java.util.List;  

import java.util.Map;  

import java.util.Map.Entry;  

  

import org.apache.http.HttpEntity;  

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.HttpPost;  

import org.apache.http.message.BasicNameValuePair;  

import org.apache.http.util.EntityUtils;  

  

  

public class HttpClientUtil {  

    public String doPost(String url, Map map, String charset) {  

        HttpClient httpClient = null;  

        HttpPost httpPost = null;  

        String result = null;  

        try {  

            httpClient = new SSLClient();  

            httpPost = new HttpPost(url);  

            // 设置参数  

            List list = new ArrayList();  

            Iterator iterator = map.entrySet().iterator();  

            while (iterator.hasNext()) {  

                Entry elem = (Entry) iterator  

                        .next();  

                list.add(new BasicNameValuePair(elem.getKey(), elem.getValue()));  

            }  

            if (list.size() > 0) {  

                UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list,  

                        charset);  

                httpPost.setEntity(entity);  

            }  

            HttpResponse response = httpClient.execute(httpPost);  

            if (response != null) {  

                HttpEntity resEntity = response.getEntity();  

                if (resEntity != null) {  

                    result = EntityUtils.toString(resEntity, charset);  

                }  

            }  

        } catch (Exception ex) {  

            ex.printStackTrace();  

        }  

        return result;  

    }  

}  

使用方法

 

 

[java] view plain copy

import java.util.HashMap;  

import java.util.Map;  

  

//对接口进行测试    

public class TestSSL {  

    private String url = "https://localhost:8080/service";//接口只是把差un过来的参数返回  

    private String charset = "utf-8";  

    private HttpClientUtil httpClientUtil = null;  

  

    public TestSSL() {  

        httpClientUtil = new HttpClientUtil();  

    }  

  

    public void test() {  

        Map createMap = new HashMap();  

        createMap.put("username", "45678");  

        createMap.put("password", "4567845678");  

        String httpOrgCreateTestRtn = httpClientUtil.doPost(url, createMap,  

                charset);  

        System.out.println("result:" + httpOrgCreateTestRtn);   

    }  

  

    public static void main(String[] args) {  

        TestSSL main = new TestSSL();  

        main.test();  

    }  

}  

 

用到的jar包



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: