zoukankan      html  css  js  c++  java
  • 网络各通信 获取和设置 Cookie

    如果在 Silverlight 应用程序中指定客户端 HTTP 处理,则可以获取和设置与请求和响应关联的 Cookie

    设置请求消息上的 Cookie

    1. 为 HttpWebRequestHttpWebRequest.CookieContainer 属性创建一个 System.Net.CookieContainer 对象。

    2. 使用 CookieContainer.Add 方法将 Cookie 对象添加到 HttpWebRequest.CookieContainer

    获取响应消息上的 Cookie

    1. 在请求上创建一个 System.Net.CookieContainer 以保存对响应发送的 Cookie 对象。即使没有发送任何 Cookie 也必须执行此操作。

    2. 检索 HttpWebResponseHttpWebResponse.Cookies 属性中的值。在此示例中,将检索 Cookie 并将它们保存到独立存储中。

    View Code
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using System.Net.Browser;
    using System.IO;
    using System.Text;
    using System.IO.IsolatedStorage;


    namespace CookiesEx
    {
    public partial class MainPage : UserControl
    {
    public MainPage()
    {
    InitializeComponent();

    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
    InitializeWebRequestClientStackForURI();
    ReadFromIsolatedStorage();
    }

    private void InitializeWebRequestClientStackForURI()
    {
    // Create the client WebRequest creator.
    IWebRequestCreate creator = WebRequestCreator.ClientHttp;

    // Register both http and https.
    WebRequest.RegisterPrefix("http://", creator);
    WebRequest.RegisterPrefix(
    "https://", creator);


    // Create a HttpWebRequest.
    HttpWebRequest request = (HttpWebRequest)
    WebRequest.Create(
    "http://api.search.live.net/clientaccesspolicy.xml");

    //Create the cookie container and add a cookie.
    request.CookieContainer = new CookieContainer();


    // This example shows manually adding a cookie, but you would most
    // likely read the cookies from isolated storage.
    request.CookieContainer.Add(new Uri("http://api.search.live.net"),
    new Cookie("id", "1234"));

    // Send the request.
    request.BeginGetResponse(new AsyncCallback(ReadCallback), request);
    }

    // Get the response and write cookies to isolated storage.
    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();
    }
    }

    }
    }
    private void ReadFromIsolatedStorage()
    {
    using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForSite())
    {
    using (IsolatedStorageFileStream isfs =
    isf.OpenFile(
    "CookieExCookies", FileMode.Open))
    {
    using (StreamReader sr = new StreamReader(isfs))
    {
    tb1.Text
    = sr.ReadToEnd();
    sr.Close();
    }
    }

    }
    }


    }
    }
    UI Code
    <UserControl x:Class="CookiesEx.MainPage"
    xmlns
    ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x
    ="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d
    ="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc
    ="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable
    ="d" d:DesignWidth="640" d:DesignHeight="480">
    <StackPanel x:Name="LayoutRoot">
    <Button Width="200" Height="50" Content="Click to send request"
    HorizontalAlignment
    ="Left"
    x:Name
    ="button1" Click="button1_Click" Margin="5"/>
    <TextBlock Margin="5" Width="600" Height="400" x:Name="tb1"
    HorizontalAlignment
    ="Left" />
    </StackPanel>
    </UserControl>

  • 相关阅读:
    【C++】深度探索C++对象模型读书笔记--关于对象(Object Lessons)
    【操作系统】调度算法
    【vim】vim常用命令
    【linux】linux的数据流重定向
    以太网帧,IP,TCP,UDP首部结构
    IPv4编址及子网划分
    【计算机网络】计算机网络模型
    【计算机网络】NAT:网络地址转换
    【设计模式】C++中的单例模式
    (转)linux查找技巧: find grep xargs
  • 原文地址:https://www.cnblogs.com/landexia/p/1990361.html
Copyright © 2011-2022 走看看