如何在java中使用HTTPS wsdl文件而不下载到本地计算机
我刚刚实现了我的第一个Web服务(客户端)。URL是HTTPS。我试图直接使用这个网址,但我做不到。所以我下载了WSDL文件,一切正常。现在的问题是,当服务定义更改时,我将不知道,因为我编写的代码基于我保存的本地WSDL。回到原点。是否可以直接使用HTTPS URL而不下载它。如何在java中使用HTTPS wsdl文件而不下载到本地计算机,java,web-services,https,wsdl,client,Java,Web Services,Https,Wsdl,Client,我刚刚实现了我的第一个Web服务(客户端)。URL是HTTPS。我试图直接使用这个网址,但我做不到。所以我下载了WSDL文件,一切正常。现在的问题是,当服务定义更改时,我将不知道,因为我编写的代码基于我保存的本地WSDL。回到原点。是否可以直接使用HTTPS URL而不下载它。 我在尝试使用URL实现Web服务时遇到的异常有: Exception in thread "main" javax.xml.ws.WebServiceException: org.apache.cxf.service.f
我在尝试使用URL实现Web服务时遇到的异常有:
Exception in thread "main" javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:151)
at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:101)
at javax.xml.ws.Service.<init>(Unknown Source)
at org.tempuri.Service.<init>(Service.java:43)
at org.tempuri.ServiceSoap_ServiceSoap_Client.main(ServiceSoap_ServiceSoap_Client.java:65)
Caused by: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:100)
at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:204)
at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:149)
... 4 more
Caused by: javax.wsdl.WSDLException: WSDLException: faultCode=PARSER_ERROR: Problem parsing 'https myipaddress service.asmx?WSDL'.: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names present
at com.ibm.wsdl.xml.WSDLReaderImpl.getDocument(WSDLReaderImpl.java:2198)
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:2390)
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:2422)
at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:263)
at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:206)
at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:98)
... 6 more
Caused by: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names present
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Unknown Source)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.getDocument(WSDLReaderImpl.java:2188)
... 11 more
Caused by: java.security.cert.CertificateException: No subject alternative names present
at sun.security.util.HostnameChecker.matchIP(Unknown Source)
at sun.security.util.HostnameChecker.match(Unknown Source)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkIdentity(Unknown Source)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
线程“main”javax.xml.ws.webserviceception中的异常:org.apache.cxf.service.factory.ServiceConstructionException:未能创建服务。
位于org.apache.cxf.jaxws.serviceinpl.(serviceinpl.java:151)
位于org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:101)
位于javax.xml.ws.Service。(未知源)
位于org.tempuri.Service.(Service.java:43)
位于org.tempuri.ServiceSoap\u ServiceSoap\u Client.main(ServiceSoap\u ServiceSoap\u Client.java:65)
原因:org.apache.cxf.service.factory.ServiceConstructionException:未能创建服务。
位于org.apache.cxf.wsdl11.WSDLServiceFactory.(WSDLServiceFactory.java:100)
位于org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:204)
位于org.apache.cxf.jaxws.serviceinpl.(serviceinpl.java:149)
... 4更多
原因:javax.wsdl.WSDLException:WSDLException:faultCode=PARSER\u错误:解析“https myipaddress service.asmx?wsdl”时出现问题:javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateException:不存在主题替代名称
位于com.ibm.wsdl.xml.WSDLReaderImpl.getDocument(WSDLReaderImpl.java:2198)
位于com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:2390)
位于com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:2422)
位于org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:263)
位于org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:206)
位于org.apache.cxf.wsdl11.WSDLServiceFactory.(WSDLServiceFactory.java:98)
... 还有6个
原因:javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateException:不存在主题替代名称
位于com.sun.net.ssl.internal.ssl.Alerts.getSSLException(未知源)
位于com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(未知源)
位于com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(未知源)
位于com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(未知源)
位于com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(未知源)
位于com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(未知源)
位于com.sun.net.ssl.internal.ssl.Handshaker.processLoop(未知源)
位于com.sun.net.ssl.internal.ssl.Handshaker.process_记录(未知源)
位于com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(未知源)
位于com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(未知源)
位于com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(未知源)
位于com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(未知源)
位于sun.net.www.protocol.https.HttpsClient.afterConnect(未知来源)
位于sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(未知源)
位于sun.net.www.protocol.http.HttpURLConnection.getInputStream(未知源)
位于sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(未知源)
位于com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(未知源)
位于com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(未知源)
位于com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(未知源)
位于com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(未知源)
位于com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(未知源)
位于com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(未知源)
位于com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(未知源代码)
位于com.ibm.wsdl.xml.WSDLReaderImpl.getDocument(WSDLReaderImpl.java:2188)
... 还有11个
原因:java.security.cert.CertificateException:不存在主题替代名称
位于sun.security.util.HostnameChecker.matchIP(未知源)
位于sun.security.util.HostnameChecker.match(未知源)
位于com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkIdentity(未知源)
位于com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(未知源)
请帮忙。提前感谢。简单的答案是肯定的,可以使用HTTPS检索WSDL “不存在主题替代名称”是Java告诉您正在使用的URL的主机名与主机证书中的公共名称(CN)不匹配的模糊方式 正确的解决方案是使用与证书匹配的主机名,或者获得一个新证书,其中包含正确的主机名 中描述了一种变通方法