JAVA调用HTTPS接口



public String callMemberInfoInterface(String request) throws Exception {
if (logger.isInfoEnabled()) {
logger.info("callMemberInfoInterface request : " + request);
}
// First create a trust manager that won't care.
X509TrustManager trustManager = new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
// Don't do anything.
}

public void checkServerTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
// Don't do anything.
}

public X509Certificate[] getAcceptedIssuers() {
// Don't do anything.
return null;
}

};
// Now put the trust manager into an SSLContext.
SSLContext sslcontext = SSLContext.getInstance("SSL");
sslcontext.init(null, new TrustManager[] { trustManager }, null);

// Use the above SSLContext to create your socket factory
// (I found trying to extend the factory a bit difficult due to a
// call to createSocket with no arguments, a method which doesn't
// exist anywhere I can find, but hey-ho).
SSLSocketFactory sf = new SSLSocketFactory(sslcontext);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.getConnectionManager().getSchemeRegistry().register(new Scheme("https", sf, 443));

HttpGet httpPost = new HttpGet(request);
String result = "";
// Execute HTTP request
httpPost.setHeader("Authorization", "basic " + "dGNsb3VkYWRtaW46dGNsb3VkMTIz");
httpPost.setHeader("Content-type", "application/xml");

HttpResponse response = httpclient.execute(httpPost);
HttpEntity resEntity = response.getEntity();
InputStreamReader reader = new InputStreamReader(resEntity.getContent());

char[] buff = new char[1024];
int length = 0;
while ((length = reader.read(buff)) != -1) {
result += new String(buff, 0, length);
}
httpclient.getConnectionManager().shutdown();

if (logger.isInfoEnabled()) {
logger.info("callMemberInfoInterface >>>:" + new String(result.getBytes("GBK"), "UTF-8"));
}
return result;
}


Java 调用 HTTPS 接口可以通过以下步骤实现: 1. 获取 SSLContext 对象 ```java SSLContext sslContext = SSLContext.getInstance("TLS"); ``` 2. 初始化 SSLContext 对象 ```java TrustManager[] trustManagers = {new X509TrustManager() { @Override public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { } @Override public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { } @Override public X509Certificate[] getAcceptedIssuers() { return null; } }}; sslContext.init(null, trustManagers, new SecureRandom()); ``` 3. 获取 HttpsURLConnection 对象 ```java URL url = new URL("https://example.com/api"); HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); ``` 4. 设置 SSLContext ```java conn.setSSLSocketFactory(sslContext.getSocketFactory()); ``` 5. 发送请求 ```java conn.setRequestMethod("POST"); conn.setDoOutput(true); conn.setRequestProperty("Content-Type", "application/json"); OutputStream outputStream = conn.getOutputStream(); outputStream.write("{\"foo\":\"bar\"}".getBytes()); outputStream.flush(); outputStream.close(); ``` 完整代码示例: ```java import javax.net.ssl.*; import java.io.*; import java.net.URL; import java.security.SecureRandom; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; public class HttpsExample { public static void main(String[] args) throws Exception { SSLContext sslContext = SSLContext.getInstance("TLS"); TrustManager[] trustManagers = {new X509TrustManager() { @Override public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { } @Override public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { } @Override public X509Certificate[] getAcceptedIssuers() { return null; } }}; sslContext.init(null, trustManagers, new SecureRandom()); URL url = new URL("https://example.com/api"); HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.setSSLSocketFactory(sslContext.getSocketFactory()); conn.setRequestMethod("POST"); conn.setDoOutput(true); conn.setRequestProperty("Content-Type", "application/json"); OutputStream outputStream = conn.getOutputStream(); outputStream.write("{\"foo\":\"bar\"}".getBytes()); outputStream.flush(); outputStream.close(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream())); StringBuilder stringBuilder = new StringBuilder(); String line; while ((line = bufferedReader.readLine()) != null) { stringBuilder.append(line); } bufferedReader.close(); System.out.println(stringBuilder.toString()); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值