Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Visual FoxPro) SharePoint -- Rename FolderThis example shows how to rename SharePoint folder. Renaming a folder is not straightforward. Apparently, the information published by Microsoft is incorrect and simply doesn't work (the information about how to update a folder by using the MERGE method is incorrect). To rename a folder requires two steps, as demonstrated by this example.
LOCAL loHttp LOCAL lcSAllFields LOCAL loJson LOCAL loSbPath LOCAL loReq LOCAL loJsonBody LOCAL lnBUseTls LOCAL loResp * This requires the Chilkat API to have been previously unlocked. * See Global Unlock Sample for sample code. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Http') loHttp = CreateObject('Chilkat.Http') * If SharePoint Windows classic authentication is used, then set the * Login, Password, LoginDomain, and NtlmAuth properties. loHttp.Login = "SHAREPOINT_USERNAME" loHttp.Password = "SHAREPOINT_PASSWORD" loHttp.LoginDomain = "SHAREPOINT_NTLM_DOMAIN" loHttp.NtlmAuth = 1 * The more common case is to use SharePoint Online authentication (via the SPOIDCRL cookie). * If so, do not set Login, Password, LoginDomain, and NtlmAuth, and instead * establish the cookie as shown at SharePoint Online Authentication * The first step in renaming a file is send a GET to the /ListItemAllFields endpoint: * Indicate we want a JSON response. loHttp.SetRequestHeader("Accept","application/json;odata=verbose") * In this example, we want to rename the folder "/Documents/ChilkatTest" to "/Documents/ChilkatTest2" * If your Sharepoint site is within a site collection, then use "https://SHAREPOINT_HTTPS_DOMAIN/sites/teamA/_api/web/GetFolderByServerRelativeUrl('/sites/teamA/Documents/ChilkatTest')/ListItemAllFields" where "teamA" is the name of the site. lcSAllFields = loHttp.QuickGetStr("https://SHAREPOINT_HTTPS_DOMAIN/_api/web/GetFolderByServerRelativeUrl('/Documents/ChilkatTest')/ListItemAllFields") IF (loHttp.LastMethodSuccess <> 1) THEN ? loHttp.LastErrorText RELEASE loHttp CANCEL ENDIF * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.JsonObject') loJson = CreateObject('Chilkat.JsonObject') loJson.Load(lcSAllFields) loJson.EmitCompact = 0 ? loJson.Emit() * The JSON response will look like this: * We'll need to get the "id", "etag", and "type" for the next step. The "id" for the * sample below is "Web/Lists(guid'b0d92cec-4be1-4e52-943d-ebcb432e1c3b')/Items(62)" * * { * "d": { * "__metadata": { * "id": "Web/Lists(guid'b0d92cec-4be1-4e52-943d-ebcb432e1c3b')/Items(62)", * "uri": "https://SHAREPOINT_HTTPS_DOMAIN/_api/Web/Lists(guid'b0d92cec-4be1-4e52-943d-ebcb432e1c3b')/Items(62)", * "etag": "\"4\"", * "type": "SP.Data.DocumentsItem" * }, * ... * ... * "FileSystemObjectType": 1, * "Id": 62, * "ContentTypeId": "0x012000FA905915D7D8F7458C1A0AF1E981BFF5", * "Title": "ChilkatTest", * "OData__dlc_DocId": null, * "OData__dlc_DocIdUrl": null, * "URL": null, * "DocumentSetDescription": null, * "EditorId": 25, * "ID": 62, * "Created": "2017-04-12T19:18:29", * "AuthorId": 25, * "Modified": "2017-04-12T19:49:15", * "OData__CopySource": null, * "CheckoutUserId": null, * "OData__UIVersionString": "1.0", * "GUID": "71f30f44-e33a-48e7-b4d8-9d619ba1ad69" * } * } * ------------------------------------------------------------------------------- * Step 2... * To rename a folder, we're going to POST to * https://SHAREPOINT_HTTPS_DOMAIN/_api/Web/Lists(guid'b0d92cec-4be1-4e52-943d-ebcb432e1c3b')/Items(62) * with a request body containing the following JSON: * * { "__metadata": { "type": "THE_TYPE_FROM_ABOVE" }, "Title": "New title", "FileLeafRef": "New title"} * * Build the Path, which is "/_api/" + the id from above. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.StringBuilder') loSbPath = CreateObject('Chilkat.StringBuilder') loSbPath.Append("/_api/") loSbPath.Append(loJson.StringOf("d.__metadata.id")) * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.HttpRequest') loReq = CreateObject('Chilkat.HttpRequest') loReq.HttpVerb = "POST" loReq.Path = loSbPath.GetAsString() * We need to add a form digest value in the X-RequestDigest header field. * See this example for details on * how to get (and cache) a form digest value loReq.AddHeader("X-RequestDigest","SHAREPOINT_FORM_DIGEST") * Set the Content-Type, and indicate that a JSON response is desired. loReq.ContentType = "application/json;odata=verbose" loReq.AddHeader("Accept","application/json;odata=verbose") * We need a few more headers... loReq.AddHeader("IF-MATCH",loJson.StringOf("d.__metadata.etag")) loReq.AddHeader("X-HTTP-Method","MERGE") * Create and add the JSON body. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.JsonObject') loJsonBody = CreateObject('Chilkat.JsonObject') loJsonBody.UpdateString("__metadata.type",loJson.StringOf("d.__metadata.type")) loJsonBody.UpdateString("Title","ChilkatTest2") loJsonBody.UpdateString("FileLeafRef","ChilkatTest2") loReq.LoadBodyFromString(loJsonBody.Emit(),"utf-8") * Send the POST using HTTPS. lnBUseTls = 1 loResp = loHttp.SynchronousRequest("SHAREPOINT_HTTPS_DOMAIN",443,lnBUseTls,loReq) IF (loHttp.LastMethodSuccess <> 1) THEN ? loHttp.LastErrorText RELEASE loHttp RELEASE loJson RELEASE loSbPath RELEASE loReq RELEASE loJsonBody CANCEL ENDIF * The response body contains JSON. * When successful, it will be empty. loJson.Load(loResp.BodyStr) loJson.EmitCompact = 0 ? "Response status code = " + STR(loResp.StatusCode) * The expected success response code is 204. IF (loResp.StatusCode <> 204) THEN ? "Response status code = " + STR(loResp.StatusCode) ? loJson.Emit() ? "Failed" RELEASE loResp RELEASE loHttp RELEASE loJson RELEASE loSbPath RELEASE loReq RELEASE loJsonBody CANCEL ENDIF RELEASE loResp * The response body is empty for a 204 (success) response... ? "Success." RELEASE loHttp RELEASE loJson RELEASE loSbPath RELEASE loReq RELEASE loJsonBody |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.