Начиная с WP 7.1 Mango "release", если можно так назвать, см. Обзор управления веб-браузером для Windows Phone .Недавно он был немного обновлен, и оказалось, что они фактически добавили некоторую поддержку для поиска файлов cookie из WebBrowser.Внизу страницы вы найдете крошечную ссылку GetCookies (WebBrowser) , указывающую на описание нового класса: WebBrowserExtensions с помощью этого очень удобного метода.Да, у этого класса есть только один единственный член.Это метод расширения, я полагаю, что никаких объяснений по этому поводу не требуется.
Я не слишком много играл с этим методом, но, похоже, это позволит вам получить доступ к тому же самому трюку с JS: набор cookie длятекущий URL.Это, вероятно, не позволит ничего устанавливать или просматривать файлы cookie для других URL-адресов.Возможно, если вы будете усердно играть с CookieContainer, который вы получите, но я сомневаюсь.
В версии 7.0 я изо всех сил пытался добиться "прозрачности cookie" для моего приложения.Короче говоря, мое приложение выполняло несколько фоновых HTTP-запросов, а также имело веб-браузер для отображения некоторого онлайн-контента - и «было бы здорово», если бы оба источника соединений отправляли на сервер одинаковые файлы cookie., мое приложение должно было сделать первый запрос, а затем позволить браузеру перемещаться.При таких требованиях практически невозможно было обеспечить согласованность файлов cookie - даже, несмотря на нынешний новый и великолепный метод GetCookie, я полагаю, это будет чертовски сложно.Итак, по сути - это было возможно, но нужно было использовать какой-то скрытый API, который публично присутствует на телефоне, но скрыт в SDK.API доступен (общедоступный) класс System.Net.Browser.WebRequestCreator , свободно доступный.Особенность в том, что в SDK этот класс имеет одно общедоступное статическое свойство «IWebRequestCreate ClientHttp» с методом «Create», который можно использовать для «фабрикации» ваших «необработанных» http-соединений - в случае, если вы не хотите использовать WebClient длянекоторая причина.На телефоне и в эмуляторе есть второе общедоступное статическое свойство с именем "IWebRequestCreate BrowserHttp" , легко возвращаемое Reflection:
PropertyInfo brwhttp = typeof(System.Net.Browser.WebRequestCreator)
.GetProperty("BrowserHttp")
с этимсвойство, вы сможете получить «специальный» внутренний экземпляр IWebRequestCreate, который используется внутри WebBrowser.Открыв свои фоновые HTTP-запросы с этим классом, вы автоматически получите ваши куки-файлы, как если бы они были созданы / отправлены с помощью элемента управления WebBrowser, но, в свою очередь - вы НЕ сможете изменять http заголовки, пользователь обеспечивает аутентификацию пользователя http и ни один не делает несколько вещей низкого уровня - потому что все эти настройки будут синхронизированы с данными WebBrowser, сохраненными для текущего «экземпляра пользователя системы», если мне будет разрешено вызывать его как таковой на одномТелефонное устройство хех.Взаимодействие между соединениями и веб-браузером работает в обе стороны - если ваше HTTP-соединение (созданное с использованием «скрытого свойства») получает какие-либо настройки / файлы cookie / и т. Д. - тогда веб-браузер мгновенно заметит их и обновитсвой кеш.Без потери cookie / сеанса ни с одной из сторон!
Если вам необходимо пассивно получать куки для ваших последующих соединений после некоторой первой навигации в WebBrowser - пожалуйста, используйте GetCookie или JS.Но если вам нужно, чтобы ваш код был первым, а затем передал authz в WebBrowser - вам, вероятно, придется копать глубже и использовать вышеизложенное. Он скрыт, поэтому сначала прибегните к другим средствам!
.. и не спрашивайте меня, как я его нашел или сколько времени это заняло: P приятно провести время с этим
// edit: я только что узнал, что свойство BrowserHttpобычный способ Silverlight для доступа к фабрике соединений браузера, см. BrowserHttp .Кажется, что он был спрятан только в «miniSilverlight», написанном для платформы WP7!