SharePoint: как создать папку в библиотеке документов с помощью веб-служб

Мне нужно создать простую папку в библиотеке документов в SharePoint, но я не могу найти хоть немного документации по этому вопросу.

Веб-сервис dws, похоже, используется для создания физических папок в рабочей области, мне нужен способ создать папку в библиотеке документов.

Не уверен, что делать, пожалуйста, помогите


person JL.    schedule 27.10.2009    source источник
comment
Создают ли эти ответы родительские каталоги по мере необходимости, т.е. при вызове с /one/two будут ли они создавать /one и /one/two?   -  person golimar    schedule 06.04.2016


Ответы (5)


Я нашел, что этот метод работает:

    HttpWebRequest request = (System.Net.HttpWebRequest)HttpWebRequest.Create("http://mySite/MyList/MyfolderIwantedtocreate");
    request.Credentials = CredentialCache.DefaultCredentials;
    request.Method = "MKCOL";
    HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
    response.Close();
person JL.    schedule 27.10.2009

Это код для аналогичного запроса в JAVA с использованием apache HttpClient

import org.apache.http.*;

private static HttpResponse makeFolder(
            String url,
            DefaultHttpClient httpClient) throws Exception {
    BasicHttpRequest httpPost = new BasicHttpRequest("MKCOL", url);
    HttpUriRequest httpUriRequest = new RequestWrapper(httpPost);

    HttpResponse status = httpClient.execute(httpUriRequest);
    EntityUtils.consume(status.getEntity());
    return status;
}

Код для создания httpClient и вызова функции makeFolder

DefaultHttpClient httpClient = new DefaultHttpClient();
httpClient.getCredentialsProvider().setCredentials(
        AuthScope.ANY,
        new NTCredentials(config.getUserName(), config.getPasswords(),
                        "", config.getDomain()));
person David Pitchford    schedule 11.05.2012

Я знаю, что это довольно старый вопрос, но, если кто-то еще его найдет, я сделал это следующим образом:

       String CAML =  "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
        "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
            "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " +
            "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
        "<soap:Body>" +
        "<CreateFolder " + "xmlns=\"http://schemas.microsoft.com/sharepoint/soap/dws/\">"+
            "<url>" + ParentFolder+'/'+NewFolderName+ "</url>"+
        "</CreateFolder>"+
        "</soap:Body>" +
        "</soap:Envelope>";

       String uri = "http://[your site]/_vti_bin/dws.asmx";

       WebClient client = new WebClient();
        client.Headers["SOAPAction"] = "http://schemas.microsoft.com/sharepoint/soap/dws/CreateFolder";
        client.Headers["content-type"] = "text/xml; charset=utf-8";
        client.Encoding = Encoding.UTF8;
        client.UploadStringCompleted += UploadStringCompleted;
        try
        {
            client.UploadStringAsync(new Uri(uri, UriKind.Absolute), "POST", CAML);
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error in upload string async: " + ex.Message);
        }

Я использовал silverlight, поэтому я использовал асинхронную строку загрузки, но это можно сделать и другими способами с тем же методом http post

person pclem12    schedule 12.03.2010
comment
Есть еще одно решение, использующее Lists.asmx вместо Dws.asmx: sharepoint.stackexchange.com/questions/50997/ - person golimar; 06.04.2016

Я поработал с веб-службами, но не могу найти никакого кода, который создает папку. Однако у меня есть код, который копирует файлы из общего сетевого ресурса в существующую папку в библиотеке документов SharePoint, используя пути UNC. Он использует System.IO.File - возможно, вы могли бы использовать эту технику для создания папки?

person Mayo    schedule 27.10.2009

Созданные папки в sharepoint с помощью веб-службы Document Workspace (Dws ). Работает отлично.

public static bool CreateSPFolder(string FolderDir, string FolderName, yourCredentialsClass credentials)
{
    FolderName = ReplaceInvalidChars(FolderName);

    // create an instance of the sharepoint service reference
    Dws.Dws dwsWebService = new Dws.Dws();
    dwsWebService.Url = credentials.SharePointUrl + "/_vti_bin/Dws.asmx";
    dwsWebService.Credentials = new NetworkCredential(credentials.UserId, credentials.Password);

    string result = dwsWebService.CreateFolder(string.Format("{0}/{1}",FolderDir,FolderName));
    dwsWebService.Dispose();

    if (result == null)
    {
        throw new Exception("No response creating SharePoint folder");
    }

    if (result.Equals("<Result/>"))
    {
        return true;
    }

    return false;
}

public static string ReplaceInvalidChars(string strIn)
{
    return Regex.Replace(strIn.Replace('"', '-'), @"[.~#%&*{}:<>?|/]", "-");
}
person Siddique Mahsud    schedule 22.07.2014