Попытка получить Sharepoint WSDL не удалась: «Сервер перенаправлен слишком много раз» - PullRequest
4 голосов
/ 14 июня 2011

Я пытаюсь подключиться к серверу Sharepoint через код Java.Мой код отлично работает с некоторыми серверами Sharepoint, но не удается, когда я пытаюсь подключиться к своей учетной записи Comcast.Классы ListsSoap и Lists были сгенерированы из WSDL Sharepoint с использованием wsimport.

Я прочитал, что это может быть вызвано тем, что вы не используете doman \ username в качестве имени пользователя Sharepoint.Я попытался добавить разные домены к параметру имени пользователя, например, mycompany.comcastbiz.net\\me@mycompany.comcastbiz.net, но я получил ошибку 401 для всех доменов, которые я пробовал.

BasicHTTPAuthenticator auth = new BasicHTTPAuthenticator("me@mycompany.comcastbiz.net", password);
Authenticator.setDefault(auth);

Lists listsService = new com.microsoft.schemas.sharepoint.soap.Lists();
listsSoap = listsService.getListsSoap12();
import java.net.Authenticator;

import java.net.PasswordAuthentication;

class BasicHTTPAuthenticator extends Authenticator
{

    private String userName;
    private String password;

    public BasicHTTPAuthenticator(String userName, String password)
    {
        this.userName = userName;
        this.password = password;
    }

    @Override
    protected PasswordAuthentication getPasswordAuthentication()
    {
        return new PasswordAuthentication(userName, password.toCharArray());
    }

    public String getUserName()
    {
        return userName;
    }

    public void setUserName(String userName)
    {
        this.userName = userName;
    }

    public String getPassword()
    {
        return password;
    }

    public void setPassword(String password)
    {
        this.password = password;
    }
}
public class Lists extends Service
{

    private final static URL LISTS_WSDL_LOCATION;
    private final static Logger logger = Logger.getLogger(com.microsoft.schemas.sharepoint.soap.Lists.class.getName());

    static {
        URL url = null;
        try {
            URL baseUrl;
            baseUrl = com.microsoft.schemas.sharepoint.soap.Lists.class.getResource(".");
            url = new URL(baseUrl, SharepointService.getServerUrl()+"/_vti_bin/Lists.asmx?WSDL");
        } catch (MalformedURLException e) {
            logger.warning("Failed to create URL for the wsdl Location: " + SharepointService.getServerUrl()+"/_vti_bin/Lists.asmx?WSDL");
            logger.warning(e.getMessage());
        }

        LISTS_WSDL_LOCATION = url;
    }

    public Lists() {
        super(LISTS_WSDL_LOCATION, new QName("http://schemas.microsoft.com/sharepoint/soap/", "Lists"));
    }

    ...

}

Ошибка:

javax.xml.ws.WebServiceException: Failed to access the WSDL at: https://www.po1.comcast.net/sites/mycompany//_vti_bin/Lists.asmx?WSDL.

Server redirected too many times (20).
at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.tryWithMex(RuntimeWSDLParser.java:162)
at com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:144)
at com.sun.xml.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.java:265)
at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:228)
at com.sun.xml.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:176)
at com.sun.xml.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:104)

Ответы [ 2 ]

0 голосов
/ 05 сентября 2014

Я пытался без домена, прежде чем пользователь, и у меня нет этой ошибки, может быть, он не понимает домен, попробуйте с soapUI, чтобы проверить соединение, если это нормально, это просто способ соединения с веб-сервисхорошо, так что есть еще один способ, REST API для доступа к sharepoint ...

0 голосов
/ 01 августа 2011

Правильное имя пользователя для вас будет "mycompany.comcastbiz.net \\ me".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...