目前我在系统页面上加了一些链接,比如开心网,校内等等。我把账号密码都保存到数据库中。现在要实现的就是一点链接就登陆到相应的网站中。参考了网上的一些帖子。试了一下倒是能等到首页,但是还有两个问题。
1、登陆后url还是我的本地的http://localhost:2200/test.aspx。
2、登陆后点击主页中的链接都跳转到登陆页了。(我用httpwatch查看需要POST的数据,都传了啊!)
以下是代码,恳请大家看看是什么原因! (以开心网为例)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Net;
using System.IO;
using System.Text;
using System.Data;
using System.Web.UI.WebControls;
using System.Net.Security;
using System.Security.Authentication;
using System.Security.Cryptography.X509Certificates;
namespace test
{
public partial class kaixin : System.Web.UI.Page
{
public CookieCollection cookie;
private CookieContainer _CookieContainer = new CookieContainer();
protected Encoding encode = Encoding.Default;
protected static string cookieheader;
protected void Page_Load(object sender, EventArgs e)
{
try
{
string LoginUrl = "http://www.kaixin001.com/login/login.php";
string UserName = "shanba123@yahoo.cn ";
string UserPwd = "123123";
string Txt1 = "";
//定义Cookie容器
CookieContainer CookieArray = new CookieContainer();
//创建Http请求
HttpWebRequest LoginHttpWebRequest = (HttpWebRequest)WebRequest.Create(LoginUrl);
LoginHttpWebRequest.UseDefaultCredentials = true;
//LoginHttpWebRequest.Proxy = this.getProxy();
//登录数据
string LoginData = "%2Fhome%2F&email=" + UserName + "&password=" + UserPwd;
//数据被传输类型
LoginHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
LoginHttpWebRequest.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*";
LoginHttpWebRequest.Referer = "http://www.kaixin001.com";
LoginHttpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; CIBA)";
//数据长度
LoginHttpWebRequest.ContentLength = LoginData.Length;
//数据传输方法 get或post
LoginHttpWebRequest.Method = "POST";
//设置HttpWebRequest的CookieContainer为刚才建立的那个CookieArray
LoginHttpWebRequest.CookieContainer = CookieArray;
//获取登录数据流
Stream myRequestStream = LoginHttpWebRequest.GetRequestStream();
//StreamWriter
StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.Default);
//把数据写入HttpWebRequest的Request流
myStreamWriter.Write(LoginData);
//关闭打开对象
myStreamWriter.Close();
myRequestStream.Close();
//新建一个HttpWebResponse
HttpWebResponse myHttpWebResponse = (HttpWebResponse)LoginHttpWebRequest.GetResponse();
//获取一个包含url的Cookie集合的CookieCollection
myHttpWebResponse.Cookies = CookieArray.GetCookies(LoginHttpWebRequest.RequestUri);
WebHeaderCollection a = myHttpWebResponse.Headers;
Stream myResponseStream = myHttpWebResponse.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
Txt1 = myStreamReader.ReadToEnd();
//Txt=myStreamReader.ReadToEnd();
HttpServerUtility h = new HttpServerUtility();
//h.Execute("", "");
Response.Write(Txt1);
Response.End();
//把数据从HttpWebResponse的Response流中读出
myStreamReader.Close();
myResponseStream.Close();
}
catch(Exception ee)
{
}
}
模拟登录?
感觉是HttpWebRquire不能保存交互的Session,可以改用WebBrower试一下吧。
在登录完成后添加:Response.Redirect("http://www.kaixin001.com");
服务端的代码怎么能行呢?得从前台弄一个form 提交到开心网 吧
同样期待 答案 也在 做相同的调查
如果都有同一个cookie应该是可以保持状态的。
1.httpwatch可以看到服务器的吗?不会吧
2.服务器需要维护cookies的状态,这个你没有做到所以不行
3.之间这页面时用form就行了啊,很到导航网站都是这样干的,不需要从服务器上做