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) OneDrive -- Streaming REST Download to FileDownloads the contents of a DriveItem directly to a file in the local filesystem using the Chilkat REST class. Note: This example requires Chilkat v9.5.0.69 or greater.
LOCAL loRest LOCAL lnSuccess LOCAL loOauth2 LOCAL lcUriPath LOCAL lnStatusCode LOCAL loDiscard LOCAL loRedirectUrl LOCAL loSbJson LOCAL loJsonErr LOCAL lcLocalPath LOCAL loStream * This example requires the Chilkat API to have been previously unlocked. * See Global Unlock Sample for sample code. loRest = CreateObject('Chilkat_9_5_0.Rest') * Use your previously obtained access token here: * See the following examples for getting an access token: * Get Microsoft Graph OAuth2 Access Token (Azure AD v2.0 Endpoint). * Get Microsoft Graph OAuth2 Access Token (Azure AD Endpoint). * Refresh Access Token (Azure AD v2.0 Endpoint). * Refresh Access Token (Azure AD Endpoint). * First connect to graph.microsoft.com. If there's a connectivity problem, we'll find out here. lnSuccess = loRest.Connect("graph.microsoft.com",443,1,1) IF (lnSuccess <> 1) THEN ? loRest.LastErrorText RELEASE loRest CANCEL ENDIF * (Make sure your token was obtained with the FilesRead or Files.ReadWrite scope.) loOauth2 = CreateObject('Chilkat_9_5_0.OAuth2') loOauth2.AccessToken = "MICROSOFT_GRAPH_ACCESS_TOKEN" loRest.SetAuthOAuth2(loOauth2) * Send the GET request to download the file. lcUriPath = "/v1.0/me/drive/root:/Misc/wildlife/penguins.jpg:/content" lnSuccess = loRest.SendReqNoBody("GET",lcUriPath) IF (loRest.LastMethodSuccess <> 1) THEN ? loRest.LastErrorText RELEASE loRest RELEASE loOauth2 CANCEL ENDIF * NOTE: This way of doing the HTTP GET (i.e. download) may be more cumbersome, but it * allows for finer control of handling errors. The connection establishment, the sending of the * request, the reading of the response header, and the reading of the response body (i.e. the file data) * are handled by separate method calls. If the response header indicates an error, we can read * the response body and treat it differently than if reading the file data. * Read the response header. lnStatusCode = loRest.ReadResponseHeader() ? "Response Status Code = " + STR(lnStatusCode) IF (lnStatusCode = 302) THEN * This is a redirect. Read the response body, if any, and then follow the redirect. * Usually the response body will be empty for a redirect, but we need to be sure to read * the response body just in case it exists. loDiscard = CreateObject('Chilkat_9_5_0.BinData') loRest.ReadRespBd(loDiscard) loRest.Disconnect(10) * For OneDrive, the redirect URL does not need authorization because the only way * to have obtained the direct download URL is from an authenticated request. * In fact, if we leave the authentication present, the GET request to the redirect URL will fail. * Note: The ClearAuth method is introduced in v9.5.0.69. loRest.ClearAuth() * Follow the redirect URL... loRedirectUrl = loRest.RedirectUrl() ? "Redirect Host: " + loRedirectUrl.Host ? "Redirect URI Path: " + loRedirectUrl.PathWithQueryParams lnSuccess = loRest.Connect(loRedirectUrl.Host,loRedirectUrl.Port,loRedirectUrl.Ssl,1) IF (lnSuccess <> 1) THEN ? loRest.LastErrorText RELEASE loRest RELEASE loOauth2 RELEASE loDiscard CANCEL ENDIF * Send the request.. lnSuccess = loRest.SendReqNoBody("GET",loRedirectUrl.Path) RELEASE loRedirectUrl IF (loRest.LastMethodSuccess <> 1) THEN ? loRest.LastErrorText RELEASE loRest RELEASE loOauth2 RELEASE loDiscard CANCEL ENDIF lnStatusCode = loRest.ReadResponseHeader() ? loRest.LastErrorText ? "Redirect Response Status Code = " + STR(lnStatusCode) ENDIF IF (lnStatusCode >= 300) THEN * Read the error response body. loSbJson = CreateObject('Chilkat_9_5_0.StringBuilder') lnSuccess = loRest.ReadRespSb(loSbJson) IF (lnSuccess <> 1) THEN ? loRest.LastErrorText RELEASE loRest RELEASE loOauth2 RELEASE loDiscard RELEASE loSbJson CANCEL ENDIF loJsonErr = CreateObject('Chilkat_9_5_0.JsonObject') loJsonErr.EmitCompact = 0 loJsonErr.LoadSb(loSbJson) ? loJsonErr.Emit() RELEASE loRest RELEASE loOauth2 RELEASE loDiscard RELEASE loSbJson RELEASE loJsonErr CANCEL ENDIF * Stream the response body directly to a local file. lcLocalPath = "qa_output/penguins.jpg" loStream = CreateObject('Chilkat_9_5_0.Stream') loStream.SinkFile = lcLocalPath lnSuccess = loRest.ReadRespBodyStream(loStream,1) IF (lnSuccess <> 1) THEN ? loRest.LastErrorText RELEASE loRest RELEASE loOauth2 RELEASE loDiscard RELEASE loSbJson RELEASE loJsonErr RELEASE loStream CANCEL ENDIF ? "Successfully streamed a OneDrive file to the local filesystem." RELEASE loRest RELEASE loOauth2 RELEASE loDiscard RELEASE loSbJson RELEASE loJsonErr RELEASE loStream |
© 2000-2023 Chilkat Software, Inc. All Rights Reserved.