com.ctc.wstx.exc.WstxParsingException: Неожиданный закрывающий тег ‹/span›; ожидается ‹/br›

Я создал классы-заглушки с помощью инструмента CXF wsdl2java. Я использую библиотеку Apache CXF с JCIFS. Я проверил сам файл WSDL с помощью пары инструментов, это хорошо. Вот код. Похоже, я должен сделать какую-то настройку.

//Код, связанный с аутентификацией JCIFS

jcifs.Config.setProperty("jcifs.smb.client.domain", "NTS");
jcifs.Config.setProperty("jcifs.netbios.wins", "ecmchat.mark.gov");
jcifs.Config.setProperty("jcifs.smb.client.soTimeout", "300000"); // 5 minutes
jcifs.Config.setProperty("jcifs.netbios.cachePolicy", "1200"); // 20 minutes
jcifs.Config.setProperty("jcifs.smb.client.username", "user");
jcifs.Config.setProperty("jcifs.smb.client.password", "password");

//Register the jcifs URL handler to enable NTLM
jcifs.Config.registerSmbURLHandler();

//Настройки WSDL и клиента

URL wsdlURL = BF.WSDL_LOCATION;
if (args.length > 0 && args[0] != null && !"".equals(args[0])) {
    File wsdlFile = new File(args[0]);
    try {
        if (wsdlFile.exists()) {
            wsdlURL = wsdlFile.toURI().toURL();
        } else {
            wsdlURL = new URL(args[0]);
        }
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }
}

BF ss = new BF(wsdlURL, SERVICE_NAME);
BFSoap port = ss.getBFSoap12();

Client client = ClientProxy.getClient(port);
HTTPConduit http = (HTTPConduit) client.getConduit();

HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();

httpClientPolicy.setConnectionTimeout(36000);
httpClientPolicy.setAllowChunking(false);
httpClientPolicy.setReceiveTimeout(32000);

http.setClient(httpClientPolicy);

// Вызов метода

System.out.println("Invoking testMethod...");
String _testMethod__return = port.testMethod();
System.out.println("testMethod.result=" + _testMethod__return);

Я получаю следующее исключение

Caused by: com.ctc.wstx.exc.WstxParsingException: Unexpected close tag </span>; expected </br>.
 at [row,col,system-id]: [59,22,"https://ecmchat.mark.gov/BF/BF.asmx"]
    at com.ctc.wstx.sr.StreamScanner.constructWfcException(StreamScanner.java:621)
    at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:491)
    at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:475)
    at com.ctc.wstx.sr.BasicStreamReader.reportWrongEndElem(BasicStreamReader.java:3365)
    at com.ctc.wstx.sr.BasicStreamReader.readEndElem(BasicStreamReader.java:3292)
    at com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2911)
    at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1123)
    at org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:1361)
    at org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:1255)
    at org.apache.cxf.staxutils.StaxUtils.read(StaxUtils.java:1183)
    at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:235)
    ... 9 more

Если я закомментирую код аутентификации JCIFS NTLM, я получу ошибку HTTP 401. Поэтому я считаю, что он как минимум проходит какой-то этап авторизации.

И если я использую локальный WSDL вместо удаленного URL-адреса WSDL, я получаю другую ошибку, например «метод не реализован» при вызове метода. Возможно, это связано с тем, что я неправильно использую локальный WSDL. Я даже не знаю, можем ли мы использовать локальную ссылку WSDL для удаленного обслуживания.

Затем я создал фиктивную службу SoapUI с этим WSDL, и тот же код (но без кода аутентификации JCIFS) работает хорошо и успешно вызывает методы.

Мне кажется, что я должен добавить некоторые более подходящие настройки в код, связанный с конфигурацией. Прав ли я, и знаете ли вы что-нибудь об аутентификации NTLM и Apache CXF?

Но ошибка синтаксического анализа сбивает с толку???


person user2414115    schedule 07.01.2020    source источник


Ответы (1)


Я не знаю, связано ли это. Мой исходный URL-адрес WSDL, который я дал, был таким. https://ecmchat.mark.gov/BF/BF.asmx Я добавил ?wsdl, как показано ниже https://ecmchat.mark.gov/BF/BF.asmx?wsdl Затем я получаю другую ошибку.

Интересно, почему это работает, если я обращаюсь к своей локальной версии SoapUI той же службы WSDL, но не к удаленной.

Invoking testMethod...
Jan 07, 2020 10:47:25 AM org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging
WARNING: Interceptor for {https://ecmchat.mark.gov}BF#{https://ecmchat.mark.gov}testMethod has thrown exception, unwinding now
java.lang.UnsupportedOperationException: Method not implemented.
    at java.net.URLStreamHandler.openConnection(URLStreamHandler.java:96)
    at java.net.URL.openConnection(URL.java:1028)
    at org.apache.cxf.transport.https.HttpsURLConnectionFactory.createConnection(HttpsURLConnectionFactory.java:92)
    at org.apache.cxf.transport.http.URLConnectionHTTPConduit.createConnection(URLConnectionHTTPConduit.java:121)
    at org.apache.cxf.transport.http.URLConnectionHTTPConduit.setupConnection(URLConnectionHTTPConduit.java:125)
    at org.apache.cxf.transport.http.HTTPConduit.prepare(HTTPConduit.java:505)
    at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(MessageSenderInterceptor.java:47)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
    at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:530)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:441)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:356)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:314)
    at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:140)
    at com.sun.proxy.$Proxy33.testMethod(Unknown Source)
    at edison.learn.BFSoap_BFSoap12_Client.main(BFSoap_BFSoap12_Client.java:90)

Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Method not implemented.
    at org.apache.cxf.jaxws.JaxWsClientProxy.mapException(JaxWsClientProxy.java:195)
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:145)
    at com.sun.proxy.$Proxy33.testMethod(Unknown Source)
    at edison.learn.BFSoap_BFSoap12_Client.main(BFSoap_BFSoap12_Client.java:90)
Caused by: java.lang.UnsupportedOperationException: Method not implemented.
    at java.net.URLStreamHandler.openConnection(URLStreamHandler.java:96)
    at java.net.URL.openConnection(URL.java:1028)
    at org.apache.cxf.transport.https.HttpsURLConnectionFactory.createConnection(HttpsURLConnectionFactory.java:92)
    at org.apache.cxf.transport.http.URLConnectionHTTPConduit.createConnection(URLConnectionHTTPConduit.java:121)
    at org.apache.cxf.transport.http.URLConnectionHTTPConduit.setupConnection(URLConnectionHTTPConduit.java:125)
    at org.apache.cxf.transport.http.HTTPConduit.prepare(HTTPConduit.java:505)
    at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(MessageSenderInterceptor.java:47)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
    at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:530)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:441)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:356)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:314)
    at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:140)
    ... 2 more
person user2414115    schedule 07.01.2020