java使用http创建https连接,并且使用http实现webservice服务端

5 篇文章 0 订阅
2 篇文章 0 订阅
package test.http;


import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.GeneralSecurityException;
import java.security.cert.X509Certificate;
import java.util.HashMap;
import java.util.Map;


import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.X509TrustManager;
 
/**
 * Simulating request webservice
 * 模拟请求WEBSERVICE样例
 *
 */
public class SimRequestWS {
     
    /**
     * 模拟请求WEBSERVICE方法
     * @param url   请求的Webservice地址
     * @param request   请求的报文,XML格式的字符串
     * @return
     */

private myX509TrustManager xtm = new myX509TrustManager();


    private myHostnameVerifier hnv = new myHostnameVerifier();


    public SimRequestWS() {
        SSLContext sslContext = null;
        try {
            sslContext = SSLContext.getInstance("TLSv1.2"); //或SSL、TLS、TLSv1.0、TLSv1.1(jdk1.7开始支持)、TLS1.2(jdk1.7开始支持)S
            X509TrustManager[] xtmArray = new X509TrustManager[] {xtm};
            sslContext.init(null, xtmArray, new java.security.SecureRandom());
        } catch (GeneralSecurityException e) {
            e.printStackTrace();
        }
        if (sslContext != null) {
            HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
        }
        HttpsURLConnection.setDefaultHostnameVerifier(hnv);
    }
    public  Map<String,String> doRequestWS(URL url, String request) {
        HttpURLConnection connection = null;
        String rspMsg = "";
        String rspCode = "ERROR";
        try {
            byte[] requestBuf = (byte[]) null;
            requestBuf = request.getBytes("gbk");
             
            connection = (HttpsURLConnection) url.openConnection();
            connection.setDoOutput(true);
            connection.setDoInput(true);
            connection.setRequestMethod("POST");
            connection.setUseCaches(false);
            connection.setRequestProperty("Content-Type", "text/plain");
            connection.connect();
             
            DataOutputStream out = new DataOutputStream(
                    connection.getOutputStream());
            out.write(requestBuf);
            out.flush();
            out.close();
 
            if (connection.getResponseCode() != 200) {
                System.out.println("ERROR: " + connection.getResponseMessage());
            }
             
            InputStream in = connection.getInputStream();
            ByteArrayOutputStream bufOut = new ByteArrayOutputStream();
            byte[] readBuf = new byte[100];
            while (true) {
                int ret = in.read(readBuf);
                if (ret < 0)
                    break;
                bufOut.write(readBuf, 0, ret);
            }
            byte[] rspBuf = bufOut.toByteArray();
             
            rspMsg = new String(rspBuf, "gbk");
            rspCode = connection.getResponseMessage();
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        connection = null;
        Map<String,String> map = new HashMap<String,String>();
        map.put("rspCode", rspCode);
        map.put("rspMsg", rspMsg);
        return map;
    }
 
    public static void main(String[] args) throws Exception,
            UnsupportedEncodingException {
        SimRequestWS test = new SimRequestWS();
        test.testNc();
        test.testSibel();
    }
    
    public static void testNc() throws MalformedURLException{
    URL url = new URL("https://10.45.50.185:8443/axis2/services/CallBackServices?wsdl");
        SimRequestWS test = new SimRequestWS();
        Map<String,String> map =test.doRequestWS(
                        url,
                        "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:cal=\"http://platform.nucleusconnect.com/wsdl/CallBackServices\">\n" +
                        "   <soapenv:Header>\n" + 
                        "      <cal:GetTokeAuthHeaderRequest>\n" + 
                        "         <userName>User1</userName>\n" + 
                        "         <password>password</password>\n" + 
                        "      </cal:GetTokeAuthHeaderRequest>\n" + 
                        "   </soapenv:Header>\n" + 
                        "   <soapenv:Body>\n" + 
                        "      <cal:GetRSPTokenRequest>\n" + 
                        "         <header>\n" + 
                        "  \t\t<RSP_ID>StarHub Ltd</RSP_ID>\n" + 
                        "            <Department>Business Solution - Business Broadband</Department>\n" + 
                        "            <TransactionId>NC2015110400001001</TransactionId>\n" + 
                        "         </header>\n" + 
                        "      </cal:GetRSPTokenRequest>\n" + 
                        "   </soapenv:Body>\n" + 
                        "</soapenv:Envelope>"
        );
        System.out.println(map);
    }
    
    public static void testSibel() throws MalformedURLException{
    URL url = new URL("https://10.45.48.85:8443/Siebel-2015-11-05/services/QueryPS?wsdl");
        SimRequestWS test = new SimRequestWS();
        Map<String,String> map =test.doRequestWS(
                        url,
                        "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:quer=\"http://www.starhub.com/bss/eai/ebs/query\" xmlns:head=\"http://www.starhub.com/bss/eai/ebs/udm/header\">\n" +
                        "   <soapenv:Header/>\n" + 
                        "   <soapenv:Body>\n" + 
                        "      <quer:reserveResource>\n" + 
                        "         <!--Optional:-->\n" + 
                        "         <quer:QueryResourceType>\n" + 
                        "            <!--Optional:-->\n" + 
                        "            <head:TransactionID>1</head:TransactionID>\n" + 
                        "            <!--Optional:-->\n" + 
                        "            <head:BusinessEvent>1</head:BusinessEvent>\n" + 
                        "            <head:ReturnCode>1</head:ReturnCode>\n" + 
                        "            <head:ErrorCode>1</head:ErrorCode>\n" + 
                        "            <!--Optional:-->\n" + 
                        "            <head:ErrorMessage>1</head:ErrorMessage>\n" + 
                        "            <!--Optional:-->\n" + 
                        "            <head:ExternalSysReturnCode>1</head:ExternalSysReturnCode>\n" + 
                        "            <!--Optional:-->\n" + 
                        "            <head:ExternalSysErrorCode>1</head:ExternalSysErrorCode>\n" + 
                        "            <!--Optional:-->\n" + 
                        "            <head:ExternalSysErrorMessage>1</head:ExternalSysErrorMessage>\n" + 
                        "            <!--Optional:-->\n" + 
                        "            <head:TimeStamp>1</head:TimeStamp>\n" + 
                        "            <!--Optional:-->\n" + 
                        "            <head:Source>1</head:Source>\n" + 
                        "            <ResouceRequest>\n" + 
                        "               <!--Optional:-->\n" + 
                        "               <SerialNumber>1</SerialNumber>\n" + 
                        "               <!--Optional:-->\n" + 
                        "               <ResourceTypeClass>1</ResourceTypeClass>\n" + 
                        "               <!--Optional:-->\n" + 
                        "               <ResourceType>1</ResourceType>\n" + 
                        "               <!--Optional:-->\n" + 
                        "               <Status>1</Status>\n" + 
                        "               <!--Optional:-->\n" + 
                        "               <InventoryLocation>1</InventoryLocation>\n" + 
                        "               <!--Optional:-->\n" + 
                        "               <Numbers>1</Numbers>\n" + 
                        "               <!--Optional:-->\n" + 
                        "               <Operation>1</Operation>\n" + 
                        "               <!--Optional:-->\n" + 
                        "               <CustomerName>1</CustomerName>\n" + 
                        "               <!--Optional:-->\n" + 
                        "               <SHProductAssocTo>1</SHProductAssocTo>\n" + 
                        "               <!--Optional:-->\n" + 
                        "               <AgingStartDate>1</AgingStartDate>\n" + 
                        "               <!--Optional:-->\n" + 
                        "               <NetworkProfile>1</NetworkProfile>\n" + 
                        "               <!--Optional:-->\n" + 
                        "               <Remarks>1</Remarks>\n" + 
                        "            </ResouceRequest>\n" + 
                        "         </quer:QueryResourceType>\n" + 
                        "      </quer:reserveResource>\n" + 
                        "   </soapenv:Body>\n" + 
                        "</soapenv:Envelope>"
        );
        System.out.println(map);
    }
    
    
    /**
     * 重写三个方法
     * @author Administrator
     *
     */
    class myX509TrustManager implements X509TrustManager {
        
        public void checkClientTrusted(X509Certificate[] chain, String authType) {
        }


        public void checkServerTrusted(X509Certificate[] chain, String authType) {
            System.out.println("cert: " + chain[0].toString() + ", authType: " + authType);
        }


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


    /**
     * 重写一个方法
     * @author Administrator
     *
     */
    class myHostnameVerifier implements HostnameVerifier {


        public boolean verify(String hostname, SSLSession session) {
            System.out.println("Warning: URL Host: " + hostname + " vs. " + session.getPeerHost());
            return true;
        }
    }

}

//对地址进行验证

/*private HostnameVerifier hv = new HostnameVerifier(){
    public boolean verify(String urlHostName, SSLSession session){
    return urlHostName.equals(session.getPeerHost());
    }
    };*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值