2017-02-14 31 views
2

私はcefsharpでAuthとのプロキシを使用しようとしています 私はこのコードを試しましたが、認証なしのプロキシでのみ動作します Authを設定するにはどうすればよいですか?cefsharpプロキシ認証が必要

Cef.UIThreadTaskFactory.StartNew(delegate 
        { 
         string ip = "IP"; 
         string port = "PORT"; 
         var rc = chrome.GetBrowser().GetHost().RequestContext; 
         var dict = new Dictionary<string, object>(); 
         dict.Add("mode", "fixed_servers"); 
         dict.Add("server", "" + ip + ":" + port + ""); 
         string error; 
         bool success = rc.SetPreference("proxy", dict, out error); 
        }); 

私は、このリンクを見つけたが、私はそれを

https://bitbucket.org/chromiumembedded/cef/wiki/GeneralUsage.md#markdown-header-proxy-resolution を行う方法を理解していない私はbeginerだいくつかのコードを書いてください。

+0

ドキュメントはhttps://github.com/cefsharp/CefSharp/wiki/General-Usage#proxy-resolutionです。私は例を挙げることはできません。運が良かった! – amaitland

答えて

3

今回は本当に答えが戻ってきました。

IRequestHandlerを使用して独自のクラスを実装し、GetAuthCredentials()を呼び出す必要があります。

public class MyRequestHandler : IRequestHandler 
{ 

    bool IRequestHandler.GetAuthCredentials(IWebBrowser browserControl, IBrowser browser, IFrame frame, bool isProxy, string host, int port, string realm, string scheme, IAuthCallback callback) 
    { 

     if (isProxy == true) 
     {    
       callback.Continue("Username", "Password"); 

       return true; 
     } 

     return false; 

    } 
} 

callback.Continue()は、呼び出されたときに資格情報を適用します。

これで、既に持っているコードでブラウザインスタンスにハンドラを実装します。

Cef.UIThreadTaskFactory.StartNew(delegate 
{ 

     chrome.RequestHandler = new MyRequestHandler(); 

     string ip = "IP"; 
     string port = "PORT"; 
     var rc = chrome.GetBrowser().GetHost().RequestContext; 
     var dict = new Dictionary<string, object>(); 
     dict.Add("mode", "fixed_servers"); 
     dict.Add("server", "" + ip + ":" + port + ""); 
     string error; 
     bool success = rc.SetPreference("proxy", dict, out error); 
}); 
+0

こんにちは、私はこれを行うことはできません。 パブリッククラスMyRequestHandlerを:IRequestHandler { ブールIRequestHandler.GetAuthCredentials(IWebBrowser browserControl、IBrowserブラウザ、IFrameのフレーム、ブールisProxy、文字列のホスト、int型ポート、文字列レルム、文字列方式で、IAuthCallbackコールバック) { if(isProxy == true) { callback.Continue( "Username"、 "Password"); trueを返します。 } falseを返します。 } } IRequestHandlerを休止しないで実装 これをどのように修正しますか? – Samhakadas

+0

不要なものは削除してください。ここにMyRequestHandler全体があります。ペーストビン - https://pastebin.com/J6F7kwir – Jomasdf

関連する問題