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
(DataFlex) 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.
Use ChilkatAx-win32.pkg Procedure Test Handle hoHttp String sSAllFields Handle hoJson Boolean iSuccess Handle hoSbPath Variant vReq Handle hoReq Handle hoJsonBody Boolean iBUseTls Variant vResp Handle hoResp String sTemp1 Integer iTemp1 Boolean bTemp1 // This requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. Get Create (RefClass(cComChilkatHttp)) To hoHttp If (Not(IsComObjectCreated(hoHttp))) Begin Send CreateComObject of hoHttp End // If SharePoint Windows classic authentication is used, then set the // Login, Password, LoginDomain, and NtlmAuth properties. Set ComLogin Of hoHttp To "SHAREPOINT_USERNAME" Set ComPassword Of hoHttp To "SHAREPOINT_PASSWORD" Set ComLoginDomain Of hoHttp To "SHAREPOINT_NTLM_DOMAIN" Set ComNtlmAuth Of hoHttp To True // 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. Send ComSetRequestHeader To hoHttp "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. Get ComQuickGetStr Of hoHttp "https://SHAREPOINT_HTTPS_DOMAIN/_api/web/GetFolderByServerRelativeUrl('/Documents/ChilkatTest')/ListItemAllFields" To sSAllFields Get ComLastMethodSuccess Of hoHttp To bTemp1 If (bTemp1 <> True) Begin Get ComLastErrorText Of hoHttp To sTemp1 Showln sTemp1 Procedure_Return End Get Create (RefClass(cComChilkatJsonObject)) To hoJson If (Not(IsComObjectCreated(hoJson))) Begin Send CreateComObject of hoJson End Get ComLoad Of hoJson sSAllFields To iSuccess Set ComEmitCompact Of hoJson To False Get ComEmit Of hoJson To sTemp1 Showln sTemp1 // 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. Get Create (RefClass(cComChilkatStringBuilder)) To hoSbPath If (Not(IsComObjectCreated(hoSbPath))) Begin Send CreateComObject of hoSbPath End Get ComAppend Of hoSbPath "/_api/" To iSuccess Get ComStringOf Of hoJson "d.__metadata.id" To sTemp1 Get ComAppend Of hoSbPath sTemp1 To iSuccess Get Create (RefClass(cComChilkatHttpRequest)) To hoReq If (Not(IsComObjectCreated(hoReq))) Begin Send CreateComObject of hoReq End Set ComHttpVerb Of hoReq To "POST" Get ComGetAsString Of hoSbPath To sTemp1 Set ComPath Of hoReq To sTemp1 // 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 Send ComAddHeader To hoReq "X-RequestDigest" "SHAREPOINT_FORM_DIGEST" // Set the Content-Type, and indicate that a JSON response is desired. Set ComContentType Of hoReq To "application/json;odata=verbose" Send ComAddHeader To hoReq "Accept" "application/json;odata=verbose" // We need a few more headers... Get ComStringOf Of hoJson "d.__metadata.etag" To sTemp1 Send ComAddHeader To hoReq "IF-MATCH" sTemp1 Send ComAddHeader To hoReq "X-HTTP-Method" "MERGE" // Create and add the JSON body. Get Create (RefClass(cComChilkatJsonObject)) To hoJsonBody If (Not(IsComObjectCreated(hoJsonBody))) Begin Send CreateComObject of hoJsonBody End Get ComStringOf Of hoJson "d.__metadata.type" To sTemp1 Get ComUpdateString Of hoJsonBody "__metadata.type" sTemp1 To iSuccess Get ComUpdateString Of hoJsonBody "Title" "ChilkatTest2" To iSuccess Get ComUpdateString Of hoJsonBody "FileLeafRef" "ChilkatTest2" To iSuccess Get ComEmit Of hoJsonBody To sTemp1 Get ComLoadBodyFromString Of hoReq sTemp1 "utf-8" To iSuccess // Send the POST using HTTPS. Move True To iBUseTls Get pvComObject of hoReq to vReq Get ComSynchronousRequest Of hoHttp "SHAREPOINT_HTTPS_DOMAIN" 443 iBUseTls vReq To vResp If (IsComObject(vResp)) Begin Get Create (RefClass(cComChilkatHttpResponse)) To hoResp Set pvComObject Of hoResp To vResp End Get ComLastMethodSuccess Of hoHttp To bTemp1 If (bTemp1 <> True) Begin Get ComLastErrorText Of hoHttp To sTemp1 Showln sTemp1 Procedure_Return End // The response body contains JSON. // When successful, it will be empty. Get ComBodyStr Of hoResp To sTemp1 Get ComLoad Of hoJson sTemp1 To iSuccess Set ComEmitCompact Of hoJson To False Get ComStatusCode Of hoResp To iTemp1 Showln "Response status code = " iTemp1 // The expected success response code is 204. Get ComStatusCode Of hoResp To iTemp1 If (iTemp1 <> 204) Begin Get ComStatusCode Of hoResp To iTemp1 Showln "Response status code = " iTemp1 Get ComEmit Of hoJson To sTemp1 Showln sTemp1 Showln "Failed" Send Destroy of hoResp Procedure_Return End Send Destroy of hoResp // The response body is empty for a 204 (success) response... Showln "Success." End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.