如果在 Silverlight 应用程序中指定客户端 HTTP 处理,则可以获取和设置与请求和响应关联的 Cookie。 本主题演示使用客户端 HTTP 处理时,如何获取和设置 HTTP 请求和响应上的 Cookie。
![]() |
---|
有关如何指定 HTTP 处理的信息,请参见如何指定浏览器或客户端 HTTP 处理。 |
![]() |
---|
如果服务器发送 HTTPOnly Cookie,则应在请求上创建一个 System.Net..::.CookieContainer 用于保存 Cookie,尽管将无法看到或访问该容器中存储的 Cookie。 如果不创建容器来保存 Cookie,则请求将失败。 有关 HTTPOnly Cookie 的更多信息,请参见HTTPOnly cookies. (HTTPOnly Cookie)。 |
设置请求消息上的 Cookie
-
为 HttpWebRequest 的HttpWebRequest..::.CookieContainer 属性创建一个System.Net..::.CookieContainer 对象。
request.CookieContainer = New CookieContainer()
- request.CookieContainer = new CookieContainer();
-
使用 CookieContainer..::.Add 方法将 Cookie 对象添加到HttpWebRequest..::.CookieContainer。
request.CookieContainer.Add(New Uri("http://api.search.live.net"), _ New Cookie("id", "1234"))
- request.CookieContainer.Add(new Uri("http://api.search.live.net"),
- new Cookie("id", "1234"));
获取响应消息上的 Cookie
-
在请求上创建一个 System.Net..::.CookieContainer 以保存对响应发送的 Cookie 对象。 即使没有发送任何 Cookie 也必须执行此操作。
request.CookieContainer = New CookieContainer()
- request.CookieContainer = new CookieContainer();
-
检索 HttpWebResponse 的HttpWebResponse..::.Cookies 属性中的值。 在此示例中,将检索 Cookie 并将它们保存到独立存储中。
' Get the response and write cookies to isolated storage. Private Sub ReadCallback(ByVal asynchronousResult As IAsyncResult) Dim request As HttpWebRequest = DirectCast(asynchronousResult.AsyncState, _ HttpWebRequest) Dim response As HttpWebResponse = _ DirectCast(request.EndGetResponse(asynchronousResult), HttpWebResponse) Using isf As IsolatedStorageFile = IsolatedStorageFile.GetUserStoreForSite() Using isfs As IsolatedStorageFileStream = isf.OpenFile("CookieExCookies", _ FileMode.OpenOrCreate, FileAccess.Write) Using sw As New StreamWriter(isfs) For Each cookieValue As Cookie In response.Cookies sw.WriteLine("Cookie: " + cookieValue.ToString()) Next sw.Close() End Using End Using End Using End Sub
- private void ReadCallback(IAsyncResult asynchronousResult)
- {
- HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
- HttpWebResponse response = (HttpWebResponse)
- request.EndGetResponse(asynchronousResult);
- using (IsolatedStorageFile isf =
- IsolatedStorageFile.GetUserStoreForSite())
- {
- using (IsolatedStorageFileStream isfs = isf.OpenFile("CookieExCookies",
- FileMode.OpenOrCreate, FileAccess.Write))
- {
- using (StreamWriter sw = new StreamWriter(isfs))
- {
- foreach (Cookie cookieValue in response.Cookies)
- {
- sw.WriteLine("Cookie: " + cookieValue.ToString());
- }
- sw.Close();
- }
- }
- }
- }