2012-10-24 38 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(); 
}