C#下的WebClient保存session和cookie的方法
2008-11-28 20:31
344 查看
其实实现方法挺简单,继承到WebClient,然后重写其的相关方法即可了,同时还有针对模拟post提交数据时的编码[/b]问题,也遇到了,在提交发表信息的时候,默认的好像是按照本机语言的默认编码[/b]?还是什么?具体[/b]不大了解,中间修改了下,然后针对GBK和UTF-8,测试OK了.保存下,以后或许用的到.
WebClient保存session代码,重写类
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
namespace DiscuzPost
{
class HttpClient : WebClient
{
// Cookie 容器
private CookieContainer cookieContainer;
/**/
/// <summary>
/// 创建一个新的 WebClient 实例。
/// </summary>
public HttpClient()
{
this.cookieContainer = new CookieContainer();
}
/**/
/// <summary>
/// 创建一个新的 WebClient 实例。
/// </summary>
/// <param name="cookie">Cookie 容器</param>
public HttpClient(CookieContainer cookies)
{
this.cookieContainer = cookies;
}
/**/
/// <summary>
/// Cookie 容器
/// </summary>
public CookieContainer Cookies
{
get { return this.cookieContainer; }
set { this.cookieContainer = value; }
}
/**/
/// <summary>
/// 返回带有 Cookie 的 HttpWebRequest。
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
if (request is HttpWebRequest)
{
HttpWebRequest httpRequest = request as HttpWebRequest;
httpRequest.CookieContainer = cookieContainer;
}
return request;
}
}
}
post数据改变其编码[/b]
using System;
using System.Collections.Generic;
using System.Text;
namespace DiscuzPost
{
class CharSet
{
public static byte[] get(string charset,string str){
byte[] byteArray;
if ("utf-8".Equals(charset.ToLower()))
{
byteArray = Encoding.UTF8.GetBytes(str);
}
else
{
byteArray = Encoding.Default.GetBytes(str);
}
return byteArray;
}
}
}
WebClient保存session代码,重写类
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
namespace DiscuzPost
{
class HttpClient : WebClient
{
// Cookie 容器
private CookieContainer cookieContainer;
/**/
/// <summary>
/// 创建一个新的 WebClient 实例。
/// </summary>
public HttpClient()
{
this.cookieContainer = new CookieContainer();
}
/**/
/// <summary>
/// 创建一个新的 WebClient 实例。
/// </summary>
/// <param name="cookie">Cookie 容器</param>
public HttpClient(CookieContainer cookies)
{
this.cookieContainer = cookies;
}
/**/
/// <summary>
/// Cookie 容器
/// </summary>
public CookieContainer Cookies
{
get { return this.cookieContainer; }
set { this.cookieContainer = value; }
}
/**/
/// <summary>
/// 返回带有 Cookie 的 HttpWebRequest。
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
if (request is HttpWebRequest)
{
HttpWebRequest httpRequest = request as HttpWebRequest;
httpRequest.CookieContainer = cookieContainer;
}
return request;
}
}
}
post数据改变其编码[/b]
using System;
using System.Collections.Generic;
using System.Text;
namespace DiscuzPost
{
class CharSet
{
public static byte[] get(string charset,string str){
byte[] byteArray;
if ("utf-8".Equals(charset.ToLower()))
{
byteArray = Encoding.UTF8.GetBytes(str);
}
else
{
byteArray = Encoding.Default.GetBytes(str);
}
return byteArray;
}
}
}
相关文章推荐
- C#下的WebClient保存session和cookie的方法
- C#程序中session值的保存方法以及转为字符串的方法总结
- c# 实现类的序列化与反序列化 可保存于session viewstate cookie各种缓存中
- [保存]C# 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie
- C#中 HttpWebRequest和 webclient 的POST方法
- 使用数据库保存session的方法
- 清除webbrowser cookie/session的6种方法
- 使用数据库保存session的方法
- 会话过程保存数据对象cookie和session
- C# .NET Web Api 保存Session
- Java简单实现session保存到redis的方法示例
- YII cookie和session的使用方法
- C# 保存excel 问题 ,save 方法
- WebClient保持Session和Cookie
- php禁用cookie后session设置方法分析
- 方法:C#用session做登陆
- 将用户信息保存到session、Cookie?
- 分享:ASP.NET(c#)操作cookie、session、cache工具类
- session_start保存的客户端cookie的值什么时候改变