вызов метода на веб-сервисе Navision с использованием аутентификации NTML с использованием Java - PullRequest
0 голосов
/ 16 января 2019

Я создал клиент веб-службы SOAP в Netbeans. Веб-сервис предоставляется в Navision с проверкой подлинности NTML. Во время генерации класса всплывающее окно входа в систему выбирает необходимые учетные данные и использует их для аутентификации. Проблема заключается в том, что классы генерируются, и я пытаюсь вызвать любой метод;

    ServicePort webservice_port = new WService().getServicePort();
    webservice_port.retrieveData();

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

java.io.IOException: Server returned HTTP response code: 401 for URL: ...

Exception in thread "main" com.sun.xml.ws.wsdl.parser.InaccessibleWSDLException: 2 counts of InaccessibleWSDLException.
    at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.tryWithMex(RuntimeWSDLParser.java:275)
    at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:246)
    at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:209)
    at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:178)
    at com.sun.xml.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.java:363)
    at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:321)
    at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:230)
    at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:211)
    at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:207)
    at com.sun.xml.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:114)
    at javax.xml.ws.Service.<init>(Service.java:57)
    at com.ntml.remote.MSACCO.<init>(MSACCO.java:42)

Это проблема с аутентификацией NTLM или есть другой способ передачи учетных данных?

1 Ответ

0 голосов
/ 18 января 2019

Нашел рабочее решение.Внедрение механизма аутентификации для клиента с использованием порта веб-службы.

        Port webservice_port = new Wservice().getServicePort();
        Client client = ClientProxy.getClient(webservice_port);
        HTTPConduit conduit = (HTTPConduit) client.getConduit();
        AuthorizationPolicy authorization = conduit.getAuthorization();
        authorization.setUserName(username);
        authorization.setPassword(password);
        conduit.getClient().setAllowChunking(false);
        conduit.getClient().setAutoRedirect(true);
        webservice_port.callWebMethod();
...