客户端打开已登录的网页(C#) (转)
2010-12-17 13:02
417 查看
像QQ、百度hi等等即时通讯软件都有这种功能,就是你点击客户端的一些按钮,打开的网页都是已经登录了的,因为客户端已经登录过了,不用在网页上重新登录一遍。
今天在百度知道上一个网友遇到这个问题,我就花时间研究一下,帮忙解决了。
用C#实现起来也比较简单(但有一个条件,网页登陆的时候不能有验证码),就是先用HttpWebRequest登陆获取到cookie值,然后再把cookie写到浏览器的cookie目录,最后再打开浏览器。以下为实现代码,对于有什么问题欢迎留言。
代码
using System.IO;
using System.Text;
using System.Net;
using System.Runtime.InteropServices;
class Login
{
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);
public static void Main()
{
CookieCollection myCookies = new CookieCollection(); //cookie集合
byte[] data = Encoding.ASCII.GetBytes("username=XXXXXX&password=********"); //用户名、密码信息
string url = @"http://www.XXX.com/……"; //登陆表单的action地址
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
myRequest.CookieContainer = new CookieContainer();
try
{
Stream newStream = myRequest.GetRequestStream();
newStream.Write(data, 0, data.Length);
newStream.Close();
}
catch (WebException)
{
throw new WebException("网络链接错误!");
}
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
myCookies.Add(myResponse.Cookies); //添加cookie
foreach (Cookie cookie in myCookies) //将cookie设置为浏览的cookie
{
InternetSetCookie(
"http://" + cookie.Domain.ToString(),
cookie.Name.ToString(),
cookie.Value.ToString() + ";expires=Sun,22-Feb-2099 00:00:00 GMT");
}
System.Diagnostics.Process.Start("http://www.XXX.com/"); //打开浏览器
}
}
今天在百度知道上一个网友遇到这个问题,我就花时间研究一下,帮忙解决了。
用C#实现起来也比较简单(但有一个条件,网页登陆的时候不能有验证码),就是先用HttpWebRequest登陆获取到cookie值,然后再把cookie写到浏览器的cookie目录,最后再打开浏览器。以下为实现代码,对于有什么问题欢迎留言。
代码
using System.IO;
using System.Text;
using System.Net;
using System.Runtime.InteropServices;
class Login
{
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);
public static void Main()
{
CookieCollection myCookies = new CookieCollection(); //cookie集合
byte[] data = Encoding.ASCII.GetBytes("username=XXXXXX&password=********"); //用户名、密码信息
string url = @"http://www.XXX.com/……"; //登陆表单的action地址
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
myRequest.CookieContainer = new CookieContainer();
try
{
Stream newStream = myRequest.GetRequestStream();
newStream.Write(data, 0, data.Length);
newStream.Close();
}
catch (WebException)
{
throw new WebException("网络链接错误!");
}
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
myCookies.Add(myResponse.Cookies); //添加cookie
foreach (Cookie cookie in myCookies) //将cookie设置为浏览的cookie
{
InternetSetCookie(
"http://" + cookie.Domain.ToString(),
cookie.Name.ToString(),
cookie.Value.ToString() + ";expires=Sun,22-Feb-2099 00:00:00 GMT");
}
System.Diagnostics.Process.Start("http://www.XXX.com/"); //打开浏览器
}
}
相关文章推荐
- 客户端打开已登录的网页(C#)
- C#注册URL协议,使用浏览器打开本地程序,类似网页上点了QQ交谈打开本地QQ客户端程序
- C# 登录网页,在浏览器中打开网页
- C# winform 窗体接收命令行参数自动登录进行系统,模拟600个WCF客户端的并发压力测试
- C#WinForm应用程序实现自动填充网页上的用户名和密码并点击登录按钮【转载】
- (转)C#调用默认浏览器打开网页的几种方法
- 用户 'JWSDXSXX\Administrator' 登录失败。 原因: 无法打开明确指定的数据库。 [客户端: <local machine>]
- 如何用C#在Asp.net中实现打开新网页而不关闭当前页
- C#客户端登录Web网站,保存用户名和密码
- c# 做的登录窗体,登录成功后当前登录Form关闭,打开Main窗体,但Main窗体点关闭按钮后程序仍在进程怎么办
- C#调用默认浏览器打开网页的几种方法
- 【7gyy】win7系统登录QQ但是无法打开网页怎么办
- C#实现调用默认浏览器打开多个网页
- C#调用默认浏览器打开网页的几种方法
- 网友发来ifeng网址,打开后却是QQ空间,总提示QQ未登录?原来是一个阴险的诱骗网页
- 网页打开客户端本机程序,未安装则提示要求安装
- :如何用C#在Asp.net中实现打开新网页而不关闭当前页
- 【C#】ASP.NET网页中添加单点登录功能
- C# Winform中实现主窗口打开登录窗口关闭的方法
- C# 设置IE Cookie 从而实现自动打开需要登录的页面