2012-10-24 35 views
2

我在我的Windows 8應用程序中有一個webview。有沒有辦法從webview訪問cookie?我使用cookiecontainer來獲取響應cookie,但我想訪問cookie的jar webview。如果不可行,我可以訪問本地文件夾嗎?Windows 8 App Webview提取cookies

我發現的cookie存儲的每個應用程序文件夾本地:

Metro應用餅乾 %根%\用戶\%用戶%\應用程序數據\本地\包\ %MetroAppName%\ AC \ INetCookies 包含特定於每個Metro應用程序的Cookie文件。數據包含在文本文件中。

有沒有辦法以編程方式從應用程序訪問內容?

我會嘗試在位以下幾點:

using Windows.Storage; 

StorageFolder localFolder = ApplicationData.Current.LocalFolder; 

更新:我試着找上面的文件夾INetCookies但它似乎並不存在。

回答

0

如果你在AppData \ Local \ Packages \ PACKAGE_NAME文件夾中搜索並搜索它,那麼現實就是存在cookies文件夾。但根據微軟的政策,我們無法訪問PACKAGE_NAME文件夾中的所有數據。

我們只能訪問的文件夾是本地狀態,臨時狀態和永久狀態,但Cookie保存在AppData \ Local \ Packages \ PACKAGE_NAME \ AC \ INetCache \ SOME_KIND_OF_NAME文件夾中,無法從metro應用程序訪問。

如果需要,您可以通過下面的進一步間隙MSDN鏈接進入:

http://msdn.microsoft.com/en-in/library/windows/apps/hh464917.aspx 

http://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.applicationdata.aspx 
0

您可以使用本機撥打InternetGetCookieEx

const int INTERNET_COOKIE_HTTPONLY = 0x00002000; 

[DllImport("wininet.dll", CharSet = CharSet.Unicode, SetLastError = true)] 
static extern bool InternetGetCookieEx(string pchURL, string pchCookieName, StringBuilder pchCookieData, ref System.UInt32 pcchCookieData, int dwFlags, IntPtr lpReserved); 

static string InternetGetCookieEx(string url) 
{ 
    uint sizeInBytes = 0; 
    InternetGetCookieEx(url, null, null, ref sizeInBytes, INTERNET_COOKIE_HTTPONLY, IntPtr.Zero); 
    uint bufferCapacityInChars = (uint)Encoding.Unicode.GetMaxCharCount((int)sizeInBytes); 
    var cookieData = new StringBuilder((int)bufferCapacityInChars); 
    InternetGetCookieEx(url, null, cookieData, ref bufferCapacityInChars, INTERNET_COOKIE_HTTPONLY, IntPtr.Zero); 
    return cookieData.ToString(); 
}