Call https service

import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;


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;


public class TestSolution {


    public static String getXXX(String endPoint, String username, String password, String channel, String realId, String realIdType) throws Exception {


        String query_pattern = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:svc=\"http://svc.pin.xxx.com\"><soapenv:Header><svc:CredentialHeader><username>%s</username><password>%s</password></svc:CredentialHeader></soapenv:Header><soapenv:Body><svc:getHsbcCredentialsRequest><channel>%s</channel><hkid>%s</hkid><hkidType>%s</hkidType></svc:getHsbcCredentialsRequest></soapenv:Body></soapenv:Envelope>";


        SSLContext context = SSLContext.getInstance("SSL");


        context.init(null, new TrustManager[] { 
                new X509TrustManager() {
                    
                    public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
                    }


                    public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
                    }


                    public X509Certificate[] getAcceptedIssuers() {
                        return null;
                    }
                }
            }, 
            new SecureRandom()
        );


        HttpsURLConnection connection = (HttpsURLConnection) (new URL(endPoint).openConnection());
        connection.setSSLSocketFactory(context.getSocketFactory());
        connection.setHostnameVerifier(
                new HostnameVerifier() {
                    public boolean verify(String arg0, SSLSession arg1) {
                        return true;
                    }
                }
        );


        connection.setDoOutput(true);
        connection.setDoInput(true);
        connection.setRequestMethod("POST");
        connection.setUseCaches(false);
        connection.setRequestProperty("Content-Type", "text/xml");
        
        connection.connect();
        
        String query = String.format(query_pattern, username, password, channel, realId, realIdType);


        DataOutputStream dos = new DataOutputStream(connection.getOutputStream());
        dos.write(query.getBytes());
        dos.flush();
        
        int responseCode = connection.getResponseCode();
        
        if (responseCode != HttpURLConnection.HTTP_OK) {
            
            throw new IOException("Response Code Error [" + responseCode + "]");
        }


        InputStream dis = connection.getInputStream();


        ByteArrayOutputStream bos = new ByteArrayOutputStream();  
        
        byte[] buffer = new byte[1024];  
        int len = -1;  
        while ((len = dis.read(buffer)) != -1) {  
            bos.write(buffer, 0, len);  
        }  
        
        byte[] bytes = bos.toByteArray();
        String result = new String(bytes);
        
        bos.close();
        dis.close();
        dos.close();
        
        connection.disconnect();
        
        return result;
    }
    
    public static void main(String args[]) throws Exception {
        
        String endPoint = "https://xxx.xxx.com/services/xxxxx";
        String username = "testuser";
        String password = "XXXXXX";
        String realId = "xxxxx";
        String realIdType = "I";
        String channel = "XXXX";
        
        String result = TestSolution.getXXX(endPoint, username, password, channel, realId, realIdType);
        
        System.out.println(result);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值