2016-06-01 7 views
1

カスタムプロキシで作業するには、単純なHTTP GETリクエストが必要です。私はここでWindowsのデフォルトのプロキシ設定を取得することを話しているわけではありません。 Xamarin Androidアプリで.NET Core/UWPで単一のHTTPリクエストにカスタムWebProxyを設定する

、次のコードは動作しません:、クラスWebProxyは、Windowsユニバーサルアプリのプロジェクトで

string myProxy = "100.100.100.100:7777"; 
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri("http://my_uri")); 
request.Proxy = new WebProxy(myProxy, false);` 

実装されていません。 Location of IWebProxy implementation for .NET Core

私のコードは今ある:それはしかし動作しません

request.Proxy = new MyProxy(); 

その後、

public class MyProxy : IWebProxy 
{ 
    public Uri GetProxy(Uri destination) 
    {     
     return new Uri("http://100.100.100.100:7777"); 
    } 

    public bool IsBypassed(Uri host) 
    { 
     return false; 
    } 

    public ICredentials Credentials { get; set; } 
} 

と...だから私は、カスタム実装を作成するには、この答えを追いました。実際に、私がGetProxyの中にブレークポイントを設定しても、ヒットしません。 プロキシ設定を無視し、Windows 10のデフォルト設定を使用します。

答えて

2

我々はUWPアプリでHttpWebRequest Classを使用することができますが、私たちはHttpWebRequest.Proxy Propertyバージョン情報を見れば、私たちは、このプロパティはまたWebProxy ClassようUWPでは使用できませんでしょう。だからあなたのコードは動作しません。 .NETのコア/ UWPで

System.Net.HttpWebRequestクラスは、System.Net.Requestsライブラリです。

.NET Core 5のAPIサーフェスは、Windows 8.1アプリケーションで使用できるものと同じで、.NET Frameworkのサーフェスに比べて非常に制限されています。これは意図的なもので、代わりにHttpClient APIに切り替えることを強く推奨します。これが今後のエネルギーとイノベーションの焦点です。

このライブラリは、旧バージョンとの互換性と、これらの古いAPIを使用する.NETライブラリの使用をブロックするために提供されています。 .NETコアの場合、HttpWebRequestの実装は実際はHttpClient(.NET Frameworkからの依存関係の順序を逆転)に基づいています。上記のように、これは、UWPアプリコンテキストで管理された.NET HTTPスタックの使用を避け、.NET開発者向けの単一のHTTPクライアントロールAPIとしてHttpClientに移行するためです。

詳細については、.NET Networking APIs for UWP Appsを参照してください。

とのHttpClientのため:両方のAPIについては

、プロキシの設定を自動的にInternet Explorerの/マイクロソフトのエッジの設定から取得され、デフォルトですべてのHTTP呼び出しのために使用されています。これにより、ユーザーがプロキシ経由でインターネットに接続していてもアプリは自動的に動作します。 いずれのAPIも、あなたのアプリにカスタムプロキシを指定する方法を提供していません。ただし、HttpClientHandler.UseProxyをfalse(System.Net.Httpの場合)またはHttpBaseProtocolFilter.UseProxyをfalse(Windows.Web.Httpの場合)に設定すると、デフォルトのプロキシを使用しないように選択できます。

詳細については、Demystifying HttpClient APIs in the Universal Windows Platformを参照してください。

今のところ、1つのHTTPリクエストに対してカスタムプロキシを使用することはできません。しかし、あなたはこの機能を求めるにはUserVoiceに投票することを歓迎します。

関連する問題