Googleのディスクからファイルをダウンロードしようとしています。 認証クラス:その後GoogleドライブAPIプロキシの例外407
internal static class Perm_AppData
{
private static string[] scopes = { DriveService.Scope.DriveFile };
private static DriveService service = Autorization();
internal static DriveService Service { get { return service; } }
private static DriveService Autorization()
{
UserCredential credential;
using (var stream = GetCliSecStream())
{
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
scopes,
"user",
CancellationToken.None,
new FileDataStore(auth, true)).Result;
}
return new DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = applicationName
});
}
private static Stream GetCliSecStream()
{
var stream = new MemoryStream();
var writer = new StreamWriter(stream);
writer.Write(uSec);
writer.Flush();
stream.Position = 0;
return stream;
}
}
は、私がアカウントを選択し、アプリケーションの権利を確認しました。次のファイルをダウンロード
internal static MemoryStream DownloadFile(string fileId = null, string fileName = null)
{
using (new Watcher($"Download {fileName} {fileId}"))
{
GetRequest request = null;
if (fileId != null)
{
request = service.Files.Get(fileId);
}
else
{
if (fileName != null)
{
request = service.Files.Get(ViewDrive(SearchParameter.name, new string[] { fileName }).First().Id);
}
else
{
throw new Exception("You need at least one not null parameter to download");
}
}
request.Fields = "id, name";
var fileMemoryStream = new MemoryStream();
request.Download(fileMemoryStream);
return fileMemoryStream;
}
}
にファイルをダウンロードするための要求が例外をスローしている(System.Net.WebException:リモートサーバーがエラーを返しました:(407)プロキシ認証が必要):
Error: System.TypeInitializationException: Инициализатор типа "Updater.UnDloadAP I" выдал исключение. ---> System.TypeInitializationException: Инициализатор типа "Updater.Perm_AppData" выдал исключение. ---> System.AggregateException: Произо шла одна или несколько ошибок. ---> System.Net.Http.HttpRequestException: Произо шла ошибка при отправке запроса. ---> System.Net.WebException: Удаленный сервер возвратил ошибку: (407) Требуется аутентификация посредника. в System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult, Tra nsportContext& context) в System.Net.Http.HttpClientHandler.GetRequestStreamCallback(IAsyncResult ar)
--- Конец трассировки внутреннего стека исключений --- в Google.Apis.Http.ConfigurableMessageHandler.d__55.MoveNext() --- Конец трассировка стека из предыдущего расположения, где возникло исключение --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNoti fication(Task task) в Google.Apis.Auth.OAuth2.Requests.TokenRequestExtenstions.d__0 .MoveNext() --- Конец трассировка стека из предыдущего расположения, где возникло исключение --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNoti fication(Task task) в Google.Apis.Auth.OAuth2.Flows.AuthorizationCodeFlow.d__35. MoveNext() --- Конец трассировка стека из предыдущего расположения, где возникло исключение --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNoti fication(Task task) в Google.Apis.Auth.OAuth2.Flows.AuthorizationCodeFlow.d__30.MoveNext() --- Конец трассировка стека из предыдущего расположения, где возникло исключение --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNoti fication(Task task) в Google.Apis.Auth.OAuth2.AuthorizationCodeInstalledApp.d__8. MoveNext() --- Конец трассировка стека из предыдущего расположения, где возникло исключение --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNoti fication(Task task) в Google.Apis.Auth.OAuth2.GoogleWebAuthorizationBroker.d__4.M oveNext() --- Конец трассировка стека из предыдущего расположения, где возникло исключение --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNoti fication(Task task) в Google.Apis.Auth.OAuth2.GoogleWebAuthorizationBroker.d__1.M oveNext() --- Конец трассировки внутреннего стека исключений ---
в System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledE xceptions) в System.Threading.Tasks.Task1.GetResultCore(Boolean waitCompletionNotificat ion) в System.Threading.Tasks.Task
1.get_Result() в Updater.Perm_AppData.Autorization() в C:\Users\User\Documents\Visual Studio Projects\SMNote\Updater\Classes\API\Perm_AppData.cs:строка 27
:私はプロキシ
ポスト更新1位なしでインターネットに接続する場合、私はエラーを取得しない
WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;
:私のようなものが必要
次のコードは通常:次のコードは、通常、私はあなたが
ポスト更新#2を駆動何とか手動でのGoogleの要求にプロキシを追加する必要があることを信じて、
var request = (HttpWebRequest)WebRequest.Create(link);
request.Credentials = CredentialCache.DefaultCredentials;
request.Proxy.Credentials = CredentialCache.DefaultCredentials;
したがって、プロキシを通過しますプロキシを通過する
internal static void DoIt()
{
try
{
var t = DownloadPageAsync();
Console.WriteLine("Downloading page...");
Console.WriteLine(t.Result);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
private static async Task<string> DownloadPageAsync()
{
var proxy = WebRequest.DefaultWebProxy;
proxy.Credentials = CredentialCache.DefaultCredentials;
var httpClientHandler = new HttpClientHandler()
{
Proxy = proxy
};
using (HttpClient client = new HttpClient(httpClientHandler))
{
using (HttpResponseMessage response = await client.GetAsync("https://mail.ru"))
{
using (HttpContent content = response.Content)
{
string result = await content.ReadAsStringAsync();
return result.Substring(0, 50);
}
}
}
}
"私は何かが必要です" - そうするとどうなりますか? * 'WebRequest.DefaultWebProxy'がデフォルトで使用されると期待しています。 –
更新された更新#1 –
'WebRequest.DefaultWebProxy'とその資格情報を設定しても何が起こるのかまだまだありません。これは私のコードが 'HttpClientHandler'を介して暗黙的に使用することを期待しているものです –