JAVA利用HttpClient進行HTTPS介面調用__JAVA

來源:互聯網
上載者:User

1.為了避免需要認證,所以用一個類繼承DefaultHttpClient類,忽略校正過程。

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  * @ClassName: SSLClient  * @Description: TODO * @author Devin <xxx>  * @date 2017年2月7日 下午1:42:07  *   */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));    }}

 

2.建立一個利用HttpClient發送post請求的工具類

import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.StatusLine;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpPost;import org.apache.http.entity.StringEntity;import org.apache.http.message.BasicHeader;import org.apache.http.util.EntityUtils;/** * 利用HttpClient進行post請求的工具類 * @ClassName: HttpClientUtil  * @Description: TODO * @author Devin <xxx>  * @date 2017年2月7日 下午1:43:38  *   */public class HttpClientUtil {    @SuppressWarnings("resource")    public static String doPost(String url,String jsonstr,String charset){        HttpClient httpClient = null;        HttpPost httpPost = null;        String result = null;        try{            httpClient = new SSLClient();            httpPost = new HttpPost(url);            httpPost.addHeader("Content-Type", "application/json");            StringEntity se = new StringEntity(jsonstr);            se.setContentType("text/json");            se.setContentEncoding(new BasicHeader("Content-Type", "application/json"));            httpPost.setEntity(se);            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;    }}

3.測試代碼

public static void main(String[] args){         String url = "https://192.168.1.101/xxx";        String jsonStr = "{xxx}";        String httpOrgCreateTestRtn = HttpClientUtil.doPost(url, jsonStr, "utf-8");    }


 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.