2017-02-14 18 views
2

Я пытаюсь использовать прокси-сервер с Auth on 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; 

    } 
} 

Обратный вызов.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 { BOOL IRequestHandler.GetAuthCredentials (IWebBrowser browserControl, IBrowser браузер, IFrame кадр, BOOL isProxy, строка хост, Int порт, строка Realm, схема строки, IAuthCallback обратный вызов) { if (isProxy == true) { callback.Continue ("Username", "Password"); return true; } return false; } } без осуществления отдыха от IRequestHandler как вы это исправите? – Samhakadas

+0

Просто удалите вещи, которые вы не хотите. Вот мой весь MyRequestHandler. Pastebin - https://pastebin.com/J6F7kwir – Jomasdf