DocumentBuilder.parse()在将Web服务URL从http更改为https后引发java.net.UnknownHostException
以前,我们在应用程序中有以下代码,用于获取所需的数据。我们只是通过传递用户名、密码和搜索参数(DEA编号)形成一个web服务URL来读取所需字段。也可以从浏览器直接点击相同的URL(带参数)以查看结果:DocumentBuilder.parse()在将Web服务URL从http更改为https后引发java.net.UnknownHostException,java,web-services,http,https,xml-parsing,Java,Web Services,Http,Https,Xml Parsing,以前,我们在应用程序中有以下代码,用于获取所需的数据。我们只是通过传递用户名、密码和搜索参数(DEA编号)形成一个web服务URL来读取所需字段。也可以从浏览器直接点击相同的URL(带参数)以查看结果: { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder parser = factory.newDocumentBuilder();
{ DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
DocumentBuilder parser = factory.newDocumentBuilder();
System.setProperty("http.proxyHost", getProxyHost());
System.setProperty("http.proxyPort", getProxyPort());
System.out.println("Before URL formation");
URL url = new URL(
"http://www.deanumber.com/Websvc/deaWebsvc.asmx/GetQuery?UserName=" + getDeaUsername() + "&Password=" + getDeaPassword() + "&DEA=" +
deaNumber +
"&BAC=&BASC=&ExpirationDate=&Company=&Zip=&State=&PI=&MaxRows=");
System.out.println("After URL formation");
System.out.println("URL formed is: "+url);
Document document = null;
try {
System.out.println("toExternalForm");
String strURL = url.toExternalForm();
System.out.println("toExternalForm done: "+strURL);
**document = parser.parse(strURL);** //This is causing exception
}
catch (SAXParseException spe)
{ System.out.println("Inside SAXParseException");
spe.printStackTrace();
}
}
现在,web服务URL已从http更改为https,其余内容不变。新的URL也可以在浏览器中使用。此外,即使我在浏览器中输入http URL,它也会自动重定向到https并显示数据。但是,上面的代码并不是这样做的,它给出了以下异常:java.net.ProtocolException:Unsupported protocol:https'
因此,我将代码更改为在url中使用https,但现在出现了一个新的异常-java.net.UnknownHostException。从控制台日志中,我可以看到异常出现在==>document=parser.parse(strURL)。这里,parser是DocumentBuilder对象的一个参考变量,您可以从上面的代码中看到。我正在粘贴下面的完整堆栈跟踪
UnknownHostException的完整堆栈跟踪:
{java.net.UnknownHostException: www.deanumber.com
[2017-23-28 08:23, 0]ERROR[[ACTIVE] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)'](DeaFetcher.java:123) - Exception in DeaFetcher.getDeaFromUrl java.net.UnknownHostException: www.deanumber.com
at java.net.InetAddress.getAllByName0(InetAddress.java:1250)
at java.net.InetAddress.getAllByName(InetAddress.java:1162)
at java.net.InetAddress.getAllByName(InetAddress.java:1098)
at weblogic.net.http.HttpsClient.openServer(HttpsClient.java:265)
at weblogic.net.http.HttpsClient.openServer(HttpsClient.java:350)
at weblogic.net.http.HttpsClient.New(HttpsClient.java:553)
at weblogic.net.http.HttpsURLConnection.getHttpClient(HttpsURLConnection.java:332)
at weblogic.net.http.HttpURLConnection.getInputStream(HttpURLConnection.java:711)
at weblogic.net.http.SOAPHttpsURLConnection.getInputStream(SOAPHttpsURLConnection.java:37)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:643)
at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:189)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:812)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:347)
at weblogic.xml.jaxp.RegistryDocumentBuilder.parse(RegistryDocumentBuilder.java:163)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:177)
at com.company.project.service.DeaFetcher.fetchDeaFromUrl(DeaFetcher.java:358)
at com.company.project.service.DeaFetcher.fetchDeas(DeaFetcher.java:330)
at com.company.project.service.DeaFetcher.fetchDeas(DeaFetcher.java:239)
at com.company.project.service.DeaFetcher.fetchDeaMastersList(DeaFetcher.java:46)
at com.company.project.service.DeaFetcher$$FastClassByCGLIB$$8f6b7575.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:695)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:630)
at com.company.project.service.DeaFetcher$$EnhancerByCGLIB$$a5bf2c5a.fetchDeaMastersList(<generated>)
at com.company.project.web.MainFormController.onSubmit(EntryFormController.java:137)
at org.springframework.web.servlet.mvc.SimpleFormController.processFormSubmission(SimpleFormController.java:267)
at org.springframework.web.servlet.mvc.AbstractFormController.handleRequestInternal(AbstractFormController.java:250)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:857)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:792)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:475)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:440)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:751)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:844)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:280)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:254)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:136)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:346)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:243)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3432)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3402)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)
at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2285)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2201)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1572)
at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:255)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:263)
}
{java.net.UnknownHostException:www.deanumber.com
[2017-23-28 08:23,0]错误[[ACTIVE]ExecuteThread:'6'队列:'weblogic.kernel.Default(self-tuning)'(deaftcher.java:123)-deaftcher.getDeaFromUrl java.net.UnknownHostException:www.deanumber.com中出现异常
位于java.net.InetAddress.getAllByName0(InetAddress.java:1250)
位于java.net.InetAddress.getAllByName(InetAddress.java:1162)
位于java.net.InetAddress.getAllByName(InetAddress.java:1098)
位于weblogic.net.http.HttpsClient.openServer(HttpsClient.java:265)
位于weblogic.net.http.HttpsClient.openServer(HttpsClient.java:350)
位于weblogic.net.http.HttpsClient.New(HttpsClient.java:553)
位于weblogic.net.http.HttpsURLConnection.getHttpClient(HttpsURLConnection.java:332)
位于weblogic.net.http.HttpURLConnection.getInputStream(HttpURLConnection.java:711)
位于weblogic.net.http.SOAPHttpsURLConnection.getInputStream(SOAPHttpsURLConnection.java:37)
位于com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:643)
位于com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:189)
位于com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:812)
位于com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
位于com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
位于com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243)
位于com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:347)
位于weblogic.xml.jaxp.RegistryDocumentBuilder.parse(RegistryDocumentBuilder.java:163)
位于javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:177)
位于com.company.project.service.deaftcher.fetchDeaFromUrl(deaftcher.java:358)
位于com.company.project.service.deaftcher.fetchDeas(deaftcher.java:330)
位于com.company.project.service.deaftcher.fetchDeas(deaftcher.java:239)
位于com.company.project.service.deaftcher.fetchDeaMastersList(deaftcher.java:46)
在com.company.project.service.deaftcher$$FastClassByCGLIB$$8f6b7575.invoke()上
net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
位于org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:695)
在org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:144)上
位于org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
位于org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:166)
位于org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:630)
在com.company.project.service.deaftcher$$enhancerbyglib$$a5bf2c5a.fetchdeasterslist()上
位于com.company.project.web.MainFormController.onSubmit(EntryFormController.java:137)
位于org.springframework.web.servlet.mvc.SimpleFormController.processFormSubmission(SimpleFormController.java:267)
位于org.springframework.web.servlet.mvc.AbstractFormController.HandlerRequestInternal(AbstractFormController.java:250)
位于org.springframework.web.servlet.mvc.AbstractController.HandlerRequest(AbstractController.java:153)
位于org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
位于org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:857)
位于org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:792)
位于org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:475)
位于org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:440)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:751)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:844)
位于weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:280)
位于weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:254)
位于weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:136)
在weblogic.serv