我有一个使用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();
}