zoukankan      html  css  js  c++  java
  • Windows Mobile CookieContainer

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Net;

    namespace net.frejos.http
    {
    public class CookieManager
    {
    private Dictionary cookieValues;

    public Dictionary CookieValues {
    get {
    if (this.cookieValues == null) {
    this.cookieValues = new Dictionary();
    }

    return this.cookieValues;
    }
    }

    public void PublishCookies(HttpWebRequest webRequest)
    {
    StringBuilder sb = new StringBuilder();
    sb.Append("Cookie: ");
    foreach (string key in this.CookieValues.Keys) {
    sb.Append(key);
    sb.Append("=");
    sb.Append(this.CookieValues[key]);
    sb.Append("; ");
    sb.Append("$Path=\"/\"; ");
    }

    webRequest.Headers.Add(sb.ToString());
    sb = null;
    webRequest = null;
    }

    public void StoreCookies(HttpWebResponse webResponse)
    {
    for (int x=0; x < webResponse.Headers.Count; x++) {
    if (webResponse.Headers.Keys[x].ToLower().Equals("set-cookie")) {
    this.AddRawCookie( webResponse.Headers[x] );
    }
    }

    webResponse = null;
    }

    private void AddRawCookie(string rawCookieData)
    {
    string key = null;
    string value = null;

    string[] entries = null;

    if (rawCookieData.IndexOf(",") > 0)
    {
    entries = rawCookieData.Split(',');
    }
    else {
    entries = new string[] { rawCookieData };
    }

    foreach (string entry in entries) {
    string cookieData = entry.Trim();

    if (cookieData.IndexOf(';') > 0)
    {
    string[] temp = cookieData.Split(';');
    cookieData = temp[0];
    }

    int index = cookieData.IndexOf('=');
    if (index > 0)
    {
    key = cookieData.Substring(0, index);
    value = cookieData.Substring(index + 1);
    }

    if (key != null && value != null)
    {
    this.CookieValues[key] = value;
    }

    cookieData = null;
    }

    rawCookieData = null;
    entries = null;
    key = null;
    value = null;
    }

    public override string ToString()
    {
    StringBuilder sb = new StringBuilder();
    sb.Append("[");
    foreach (string key in this.CookieValues.Keys) {
    sb.Append("{");
    sb.Append(key);
    sb.Append(",");
    sb.Append(this.CookieValues[key]);
    sb.Append("}, ");
    }
    if (this.CookieValues.Keys.Count > 0)
    {
    sb.Remove(sb.Length - 2, 2);
    }
    sb.Append("]");

    return sb.ToString();
    }
    }
    }




    Here is a usage example:


    CookieManager cookieManager = new CookieManager();
    // Set a cookie value
    cookieManager.CookieValues["FavoriteCookie"] = "Chocolate Chip";

    HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
    // Publish the cookies to the request before asking for the response
    cookieManager.PublishCookies(webRequest);

    HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
    // Store any cookies returned from the response
    cookieManager.StoreCookies(webResponse);

    // Get the value of a cookie
    string session = cookieManager.CookieValues["SESSIONID"];

    webRequest = (HttpWebRequest)WebRequest.Create(url2);
    cookieManager.PublishCookies(webRequest);

    webResponse = (HttpWebResponse)webRequest.GetResponse();


  • 相关阅读:
    window下安装QT出错解决方案
    wiin10下VS2015+opencv3.4.0-extra_modules+CMake配置
    可重入、线程安全辨析与场景举例
    WPF仿网易云音乐系列(三、播放进度条+控制按钮)
    WPF仿网易云音乐系列(二、歌单创建窗口+登录设置模块)
    WPF仿网易云音乐系列(一、左侧菜单栏:Expander+RadioButton)
    WPF仿网易云音乐系列(序)
    C# WPF仿360安全卫士11
    crontab的语法规则格式(每分钟、每小时、每天、每周、每月、每年定时执行 规则)
    Pymysql 连接 Mysql 数据库及增删改查操作
  • 原文地址:https://www.cnblogs.com/jordan2009/p/1818319.html
Copyright © 2011-2022 走看看