2017-03-20 8 views
0

HttpClientがHttpリクエストを正常に作成しています。私は今、デバイス上にプロキシを設定したユーザーに対応したいと思っています。Xamarin AndroidのHttpClientのプロキシ信用証明

private HttpClient GetHttpClient() 
    { 
     // if a proxy is enabled set it up here 
     string host = Java.Lang.JavaSystem.GetProperty("http.proxyHost").TrimEnd('/'); 
     string port = Java.Lang.JavaSystem.GetProperty("http.proxyPort"); 
     HttpClientHandler httpClientHandler = null; 
     if (!string.IsNullOrEmpty(host) && !string.IsNullOrEmpty(port)) 
     { 
      httpClientHandler = new HttpClientHandler 
      { 
       Proxy = new WebProxy($"{host}:{port}", true), 
       UseProxy = true 
      }; 
     } 

     if (httpClientHandler != null) 
      return new HttpClient(httpClientHandler); 
     else 
      return new HttpClient(); 
    } 

しかし、これを行うことで、私は事前に設定されたプロキシの資格情報を設定しておりません。そのためには、私は、コードを持っています。資格情報を設定する必要がありますか?これは動作しません。同様に、OSに設定されている場合は、HttpClientのプロキシ設定をまったく設定する必要がありますか?資格情報が必要な場合は、どうすれば設定できますか?

答えて

1

ユーザーがデバイス(グローバルプロキシ)にプロキシを設定していて、アプリケーションがこのプロキシをインターネットに接続する必要がある場合は、ユーザー名とパスワードを設定する必要はなく、デフォルトのホストとポートを取得するだけです。

特定のプロキシを使用してサーバーに接続する場合は、自分でホスト、ポート、ユーザー名、パスワードを使用してプロキシを設定する必要があります。

private System.Net.Http.HttpClient GetHttpClient() 
    { 
     // if a proxy is enabled set it up here 
     //string host = Java.Lang.JavaSystem.GetProperty("http.proxyHost").TrimEnd('/'); 
     //string port = Java.Lang.JavaSystem.GetProperty("http.proxyPort"); 
     System.Net.Http.HttpClientHandler httpClientHandler = null; 
     httpClientHandler = new System.Net.Http.HttpClientHandler 
     { 
      Proxy = GetCSharpWebProxy(), 
      UseProxy = true 
     }; 
     if (httpClientHandler != null) 
      return new System.Net.Http.HttpClient(httpClientHandler); 
     else 
      return new System.Net.Http.HttpClient(); 
    } 

    public System.Net.WebProxy GetCSharpWebProxy() 
    { 
     var proxyURI = new System.Uri(string.Format("{0}:{1}", "your specific proxy host", 80)); 
     System.Net.ICredentials credentials = new System.Net.NetworkCredential("username", "password"); 
     System.Net.WebProxy proxy = new System.Net.WebProxy(proxyURI, true, null, credentials); 
     return proxy; 
    } 
関連する問題