3.4.15

Create Site SharePoint Rest C# CSOM


 private static string GetFormDigest(string token, string hdnHostWeb)
        {
            /* Retrieve a form digest, which is required for creating a new list item */

            string endpoint = hdnHostWeb + "/_api/contextinfo";
            HttpWebRequest digestRequest = (HttpWebRequest)HttpWebRequest.Create(endpoint);
            digestRequest.Headers.Add("Authorization", "Bearer " + token);
            digestRequest.Method = "POST";
            digestRequest.ContentLength = 0;

            HttpWebResponse digestResponse = (HttpWebResponse)digestRequest.GetResponse();
            XDocument responseDoc = XDocument.Load(digestResponse.GetResponseStream());

            XNamespace d = "http://schemas.microsoft.com/ado/2007/08/dataservices";
            string formDigest = responseDoc.Descendants(d + "FormDigestValue").First().Value;

            return formDigest;
        }

        public static Web CreateSite(string token, ClientContext cc, Web currentWeb, string template, int langue, bool heritage, string description, string titre, string url)
        {
            Web web = null;
            try
            {
                #region test
                string itemXML = "{'parameters': {'__metadata':  {'type': 'SP.WebInfoCreationInformation' },'Url': '" + url + "','Title': '" + titre + "','Description': '" + description + "','Language':" + langue + ",'WebTemplate':'" + template + "','UseUniquePermissions':'" + !heritage + "'}}";


                HttpWebRequest restRequest = (HttpWebRequest)HttpWebRequest.Create(currentWeb.Url + "/_api/web/webinfos/add");
                restRequest.Headers.Add("Authorization", "Bearer " + token);
                restRequest.Credentials = CredentialCache.DefaultCredentials;
                restRequest.Method = "POST";
                restRequest.Headers["X-RequestDigest"] = GetFormDigest(token, currentWeb.Url);
                restRequest.Accept = "application/json;odata=verbose";
                restRequest.ContentType = "application/json;odata=verbose";
                restRequest.ContentLength = itemXML.Length;
                StreamWriter sw = new StreamWriter(restRequest.GetRequestStream());
                sw.Write(itemXML);
                sw.Flush();

                //Get response
                HttpWebResponse restResponse = (HttpWebResponse)restRequest.GetResponse();
                StreamReader restStream = new StreamReader(restResponse.GetResponseStream());

                #endregion

                cc.Load(cc.Web.Webs);
                cc.ExecuteQuery();

                foreach (Web wb in cc.Web.Webs)
                {
                    if (wb.Title == titre || wb.Url == url)
                    {
                        web = wb;
                    }
                }
.....

No comments:

Post a Comment