Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中如何绕过SSL证书进行HTTPS SOAP请求_Java_Ssl_Https_Ksoap2 - Fatal编程技术网

Java中如何绕过SSL证书进行HTTPS SOAP请求

Java中如何绕过SSL证书进行HTTPS SOAP请求,java,ssl,https,ksoap2,Java,Ssl,Https,Ksoap2,我试图在Java控制台应用程序中使用Ksoap发出HTTPS请求。我需要向LAN网络上的以下本地URL发出SOAP请求: https://192.168.0.43:7002/Examples/TestService?WSDL 由于这是一个HTTPS请求,我需要绕过证书并点击Web服务。我只在测试环境中使用webservice 下面是我的java代码,它使用ksoap发送SOAP请求 public class ConnectHttps { public static void main(

我试图在Java控制台应用程序中使用
Ksoap
发出HTTPS请求。我需要向LAN网络上的以下本地URL发出SOAP请求:

https://192.168.0.43:7002/Examples/TestService?WSDL

由于这是一个HTTPS请求,我需要绕过证书并点击Web服务。我只在测试环境中使用webservice

下面是我的java代码,它使用ksoap发送SOAP请求

 public class ConnectHttps {
    public static void main(String[] args) throws Exception {
  /*
 *  fix for
 *    Exception in thread "main" javax.net.ssl.SSLHandshakeException:
 *       sun.security.validator.ValidatorException:
 *           PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException:
 *               unable to find valid certification path to requested target
 */
TrustManager[] trustAllCerts = new TrustManager[] {
   new X509TrustManager() {
      public java.security.cert.X509Certificate[] getAcceptedIssuers() {
        return null;
      }

      public void checkClientTrusted(X509Certificate[] certs, String authType) {  }

      public void checkServerTrusted(X509Certificate[] certs, String authType) {  }

   }
};

SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

// Create all-trusting host name verifier
HostnameVerifier allHostsValid = new HostnameVerifier() {
    public boolean verify(String hostname, SSLSession session) {
      return true;
    }
};
// Install the all-trusting host verifier
HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
/*
 * end of the fix
 */
  
 //send SOAP Request
   URL url = new URL("https://192.168.0.43:7002/Examples/TestService?WSDL");

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
    envelope.setOutputSoapObject(request); 
    

    //HttpsTransportSE  androidHttpTransport= new KeepAliveHttpsTransportSE("https://192.168.0.43", 7002, "TestService", 9000);

    try{

        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

        androidHttpTransport.call(SOAP_ACTION, envelope);   

        SoapPrimitive result = (SoapPrimitive)envelope.getResponse();

        if (envelope.bodyIn instanceof SoapFault) {
            String str= ((SoapFault) envelope.bodyIn).faultstring;

            System.out.println("" +str);

        } else {
            SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn;
            System.out.println("WS"+ ""+ String.valueOf(resultsRequestSOAP));
        }
    }catch(Exception ex)
    {
        System.out.println("Error:" +ex.getMessage());
        ex.printStackTrace();

    }*/



  }
}
注意:我已经按照本文中提到的修改了代码

但是,每当我运行代码时,代码1000就会出现
安全策略错误。错误发生在第
androidHttpTransport.call行(SOAP\u操作,信封)导致
SoapFault


我应该如何使用Ksoap进行HTTPS呼叫我知道这个问题已经2年了,但是我必须找到一个解决类似问题的方法,这样它可能会帮助别人。 下面是我在通过HTTPS调用SOAP服务时绕过SSL证书所做的操作:

BaseWLSSLAdapter.setStrictCheckingDefault(false);
SSLAdapterFactory.getDefaultFactory().createSSLAdapter();
System.setProperty("org.apache.axis.components.net.SecureSocketFactory", "org.apache.axis.components.net.SunFakeTrustSocketFactory");