Java 无法将SSL套接字解析为类型

Java 无法将SSL套接字解析为类型,java,Java,我有一个脚本,我想用它连接到web服务 package pdslipay; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.Socket; import java.security.KeySt

我有一个脚本,我想用它连接到web服务

package pdslipay;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
import java.security.KeyStore;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;

import za.co.ipay.retail.system.bizswitch.IpayMessageWrapper;
import za.co.ipay.retail.system.bizswitch.IpayMessageWrapper2;

public class ConnectionManager{

    private static ConnectionManager connectionManagerInstance = null;
    static Socket socket = null;
    InputStream inputStream = null;
    public static SSLClientTest sslConnect = new SSLClientTest();

    private ConnectionManager() {

       }
    public static ConnectionManager getConnectionManagerInstance() {
          if(connectionManagerInstance == null) {
              connectionManagerInstance = new ConnectionManager();
          }
          return connectionManagerInstance;
       }

    /**
     * Waits on response from server
     *
     * @param socket Server socket
     */
     public String readServerResponse(Socket socket) {
            String results = null;
            try { 
                BufferedInputStream serverReader = new BufferedInputStream(socket.getInputStream());
                IpayMessageWrapper2 wrap = new IpayMessageWrapper2();
                StringBuilder build = new StringBuilder();
                byte[] all = wrap.unWrap(serverReader);
                for (int n = 0; n < all.length; n++) {
                    char c = (char) all[n];
                    build.append(c);
                    System.out.print(c);
                }
                results = build.toString();
                System.out.println("\n\nStringBuilder " + build.toString());
                //pay.responsePrepaid(build.toString());
                //pay.responsePostPay();
                return results;
            } catch (IOException ex) {
                System.out.println("Error: Unable to read server response\n\t" + ex);
            }
            return "ERROR";
        }

    public String connection(String build) {
        BufferedOutputStream buff = null;
        String results = "ERROR";

        try {

            char[] passw = "clientpw".toCharArray();
            KeyStore ks = KeyStore.getInstance("JKS", "SUN");
            ks.load(new FileInputStream ( "resource/bizswitch-keys" ), passw );

            KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
            kmf.init(ks, passw);

            TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
            tmf.init(ks);
            TrustManager[] tm = tmf.getTrustManagers();

            SSLContext sclx = SSLContext.getInstance("TLS");
            sclx.init( kmf.getKeyManagers(), tm, null);

            SSLSocketFactory factory = sclx.getSocketFactory();
            SSLSocket socket = (SSLSocket) factory.createSocket( "01.000.000.198", 9102 );
            socket.startHandshake();


            IpayMessageWrapper wrap = new IpayMessageWrapper();

            buff = new BufferedOutputStream(socket.getOutputStream());
            buff.write(wrap.wrap(build.getBytes()));
            buff.flush();

            System.out.println("Info: Message has been sent..." + build);
            // Wait for server response
            results = getConnectionManagerInstance().readServerResponse(socket);

            return results;
        } catch (IOException ex) {
            Logger.getLogger(ConnectionManager.class.getName()).log(Level.SEVERE, null, ex);

        } 
        return results;
    }


}
我得到错误
未处理的异常类型NoSuchProviderException


如何更正代码以读取密钥库并建立安全的ssl连接?

第一个错误只是告诉您导入该类

完成此操作后,编译器可以告诉您代码中的其他问题,在本例中是关于代码中未处理的异常


您需要将异常添加到方法的抛出列表中,或者捕获/处理它。非常像代码已经处理过的IOException

阅读关于异常的教程。要么你能应付,要么你应该抓住它。或者你不能,你应该申报。
package pdslipay;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
import java.security.KeyStore;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;

import za.co.ipay.retail.system.bizswitch.IpayMessageWrapper;
import za.co.ipay.retail.system.bizswitch.IpayMessageWrapper2;