Sample code for 30+ languages & platforms
Visual FoxPro

SharePoint -- Check Out a File (or Undo a Checkout)

In SharePoint, you can check out a file to make sure nobody can change it before you update it. After updating, you can check in the file. This example shows how to check out a SharePoint file.

Note: To undo a checkout, replace the string "checkout" with "undocheckout" in the line of code that sets the request's path.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loHttp
LOCAL loReq
LOCAL lnBUseTls
LOCAL loResp
LOCAL loXml

lnSuccess = 0

* This requires the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.

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 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

* This example will check out the file named "penguins2.jpg" 
* which is located in the "/Documents" folder.

loReq = CreateObject('Chilkat.HttpRequest')
loReq.HttpVerb = "POST"
* Note that our path uses GetFileByServerRelativeUrl and not GetFolderByServerRelativeUrl
* Also, if your Sharepoint site is within a site collection, the URL is formatted like this (where "teamA" is the name of the site)
* /sites/teamA/_api/web/GetFileByServerRelativeUrl('/sites/teamA/Documents/penguins2.jpg')/checkout

* Note: To undo a checkout, replace "checkout" with "undocheckout" in the following line of code.
loReq.Path = "/_api/web/GetFileByServerRelativeUrl('/Documents/penguins2.jpg')/checkout"

* 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")

* Send the POST using HTTPS (TLS). Port 443 is the default port for https.
lnBUseTls = 1
loResp = CreateObject('Chilkat.HttpResponse')
lnSuccess = loHttp.HttpSReq("SHAREPOINT_HTTPS_DOMAIN",443,lnBUseTls,loReq,loResp)
IF (lnSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loHttp
    RELEASE loReq
    RELEASE loResp
    CANCEL
ENDIF

* The response body contains XML.
loXml = CreateObject('Chilkat.Xml')
loXml.LoadXml(loResp.BodyStr)

IF (loResp.StatusCode <> 200) THEN
    ? "Response status code = " + STR(loResp.StatusCode)
    ? loXml.GetXml()
    ? "Failed"
    RELEASE loHttp
    RELEASE loReq
    RELEASE loResp
    RELEASE loXml
    CANCEL
ENDIF

* Show the successful XML response.
? loXml.GetXml()
? "Success."

* A successful XML response looks like this:
* <?xml version="1.0" encoding="utf-8" ?>
* <d:CheckOut xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" 
* 	xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
* 	xmlns:georss="http://www.georss.org/georss" 
* 	xmlns:gml="http://www.opengis.net/gml" m:null="true" />
* 
* 

RELEASE loHttp
RELEASE loReq
RELEASE loResp
RELEASE loXml