Вызовите веб-службу SharePoint с помощью аутентификации клиента Axis2 - PullRequest
0 голосов
/ 13 октября 2010

Я пытаюсь запустить следующее в основной части моего класса Java. Код использует заглушку для проверки подлинности, а затем возвращает коллекцию списков на сайте Microsoft SharePoint.

Код выглядит следующим образом:

    ListsStub stub = new ListsStub();

        HttpTransportProperties.Authenticator auth = new HttpT

ransportProperties.Authenticator();

                auth.setUsername(username);
                auth.setPassword(pw);
                auth.setDomain(domain);
                auth.setHost(host);

                List schemes = new ArrayList(1);
                schemes.add(AuthPolicy.NTLM);
                 auth.setAuthSchemes (schemes);


                stub._getServiceClient().getOptions().setProperty(
                org.apache.axis2.transport.http.HTTPConstants.AUTHENTICATE,
                auth);
                stub._getServiceClient().getOptions().setProperty (HTTPConstants.HTTP_PROTOCOL_VERSION,
                        HTTPConstants.HEADER_PROTOCOL_10);
                //stub._getServiceClient().getOptions().setProperty (HTTPConstants.PROXY, proxy);


                String liste = "sharepointlist";
                String document2ID;

                    ListsStub.GetListCollection req = new ListsStub.GetListCollection();

                    ListsStub.GetListCollectionResponse res = null;
                    try {
                        res = stub.getListCollection(req);
                    } catch (RemoteException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

Я получаю 401, который указывает, что мой логин неверен:

org.apache.axis2.AxisFault: Транспортная ошибка: 401 Ошибка: неавторизован на org.apache.axis2.transport.http.HTTPSender.handleResponse (HTTPSender.java:310) в org.apache.axis2.transport.http.HTTPSender.sendViaPost (HTTPSender.java:200) на org.apache.axis2.transport.http.HTTPSender.send (HTTPSender.java:76) в org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons (CommonsHTTPTransportSender.java:400) в org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke (CommonsHTTPTransportSender.java:225) в org.apache.axis2.engine.AxisEngine.send (AxisEngine.java:435) в org.apache.axis2.description.OutInAxisOperationClient.send (OutInAxisOperation.java:402) в org.apache.axis2.description.OutInAxisOperationClient.executeImpl (OutInAxisOperation.java:229) в org.apache.axis2.client.OperationClient.execute (OperationClient.java:165) в org.apache.axis2.axis2userguide.ListsStub.getListCollection (ListsStub.java:1936) at gov.nasa.jpl.spconnect.MainKickOff.main (MainKickOff.java:73)

Кто-нибудь знает, почему я могу получить это?

1 Ответ

0 голосов
/ 09 июня 2011

Может быть, вы решили это, но ... сейчас я думаю, что Authenticator устарел с новым абстрактным классом, но я передал эту ошибку таким образом

your_stub_object._setProperty(Stub.USERNAME_PROPERTY, "loginname");
your_stub_object._setProperty(Stub.PASSWORD_PROPERTY, "loginsecret");

Вы должны получить объект-заглушку из объекта, который используете, когда у вас есть вызов

javax.xml.rpc.Stub your_stub_object=((javax.xml.rpc.Stub)(sp.getService1Soap()));

sp - это файл myServiceSoapProxy.

Таким способом я аутентифицировал веб-сервисы .NET. Служба .NET, которую я написал, проходит базовую проверку подлинности. Если вы получили 401, это означает ошибку входа в систему, если вы получили где-то 403, связанную с ssl.

Надеюсь, это поможет людям.

...