Google.Apis.Download.MediaDownloader检索"未找到"网页

时间:2015-07-06 18:28:51

标签: c# google-drive-api google-api-dotnet-client

我有一个使用Drive REST API的C#应用​​程序。首先,它使用" Files.list"列出驱动器的文件。端点。然后,应用程序使用 Google.Apis.Download.MediaDownloader 来获取列出文件的二进制数据。在我有时间下载之前,列出的文件会不时被删除。

MediaDownloader 不会抛出任何异常, ProgressChanged 事件会报告成功完成的下载。下载的二进制数据是html页面" Google Drive - 找不到页面"而不是文件本身。一个简单的Web HTTP请求返回404状态代码,但 MediaDownloader 似乎忽略它。

有没有办法检测404状态代码并仍然使用 MediaDownloader

我使用此类,因为它已经支持分块下载和取消令牌。

以下是代码:

/// <summary>
/// Gets the file binary data from Google Drive.
/// </summary>
/// <param name="p_DownloadUrl">The file download URL.</param>
/// <param name="p_DriveService">The Drive service.</param>
/// <param name="p_Stream">The stream.</param>
public void GetFileData(string p_DownloadUrl,
                        IClientService p_DriveServicer,
                        Stream p_Stream)
{
    MediaDownloader downloader = new MediaDownloader(p_DriveService);
    downloader.ProgressChanged += progress => {
        if (progress.Exception != null) {
            throw progress.Exception;
        }
    };

    downloader.DownloadAsync(p_DownloadUrl,
        p_Stream,
        m_CancellationToken)
        .WaitAndThrowOnFailure();
}

0 个答案:

没有答案