SharePoint: Como criar uma pasta em uma biblioteca de documentos agradar usando serviços da Web

StackOverflow https://stackoverflow.com/questions/1630824

  •  06-07-2019
  •  | 
  •  

Pergunta

Eu preciso criar uma pasta simples em uma biblioteca de documentos no SharePoint, mas eu não consigo encontrar um pedaço de documentação sobre o assunto.

Os dws webservice parece ser usado para criar pastas físicas em um espaço de trabalho, eu preciso de uma maneira de criar uma pasta em uma biblioteca de documentos.

Não tenho certeza o que fazer, por favor, ajuda

Foi útil?

Solução

Eu encontrei este método para trabalho:

    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();

Outras dicas

Este é o código para pedido semelhante em Java usando 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;
}

código para criar o httpclient e chamar a função makeFolder

DefaultHttpClient httpClient = new DefaultHttpClient();
httpClient.getCredentialsProvider().setCredentials(
        AuthScope.ANY,
        new NTCredentials(config.getUserName(), config.getPasswords(),
                        "", config.getDomain()));

Eu sei que esta é uma questão bastante antiga, mas no caso de alguém encontrar outro lugar, este é como eu fiz isso:

       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);
        }

Eu estava usando o Silverlight, que é por isso que eu usei seqüência de carregamento assíncrono, mas isso pode ser feito de outras maneiras com o mesmo método http pós

Eu fiz algum trabalho com os serviços da Web, mas não consigo encontrar qualquer código que cria uma pasta. No entanto, eu tenho o código que copia arquivos de um compartilhamento de rede para uma pasta existente em uma biblioteca de documentos do SharePoint usando caminhos UNC. Ele usa System.IO.File? - talvez você poderia usar essa técnica para criar uma pasta

criados pastas no SharePoint usando Document Workspace Web serviço (Dws) . Funciona muito bem.

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('"', '-'), @"[.~#%&*{}:<>?|/]", "-");
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top