Home > Java > javaTutorial > Example of how Java uses HttpClient to call the HTTPS interface

Example of how Java uses HttpClient to call the HTTPS interface

黄舟
Release: 2017-08-20 09:32:32
Original
1825 people have browsed it

This article mainly introduces the method of JAVA using HttpClient to make HTTPS interface calls. It has certain reference value. Those who are interested can learn about it.

This article introduces the method of JAVA using HttpClient to make HTTPS interface calls. Share with everyone, the details are as follows:

1. In order to avoid the need for a certificate, use a class to inherit the DefaultHttpClient class and ignore the verification process.


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));
  }
}
Copy after login

2. Create a tool class that uses HttpClient to send post requests


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;
  }
}
Copy after login

3. Test code


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");
  }
Copy after login

The above is the detailed content of Example of how Java uses HttpClient to call the HTTPS interface. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template