200分求教!模拟post登录aspx页面的问题,急!

morixing 2008-08-04 04:38:24
谁知道aspx页面模拟需要怎么样弄?模拟jsp、php之类的都很容易,但是这次模拟aspx的问题就来了,用httplook跟踪多出了DN.RT.CurrentUserId=DN.Admin;与.ASPXAUTH=49DB55…………,问题是这两个东西从程序中怎么获取出来?请高手解答!

程序源码
CookieContainer cc = new CookieContainer();
string postData = "__VIEWSTATE=dDwyNjA2Mzk5MzY7dDw7bDxpPDA%2BOz47bDx0PDtsPGk8MT47aTwzPjtpPDU%2BO2k8Nz47aTwxMz47aTwxNT47PjtsPHQ8cDxwPGw8VGV4dDs%2BO2w855So5oi35ZCNOz4%2BOz47Oz47dDxwPHA8bDxSZWFkT25seTs%2BO2w8bzxmPjs%2BPjs%2BOzs%2BO3Q8cDxwPGw8VGV4dDs%2BO2w85a%2BG56CBOz4%2BOz47Oz47dDxwPHA8bDxSZWFkT25seTs%2BO2w8bzxmPjs%2BPjs%2BOzs%2BO3Q8cDxwPGw8VGV4dDs%2BO2w85LiK5rW35LiH55Sz5L%2Bh5oGv5Lqn5Lia6IKh5Lu95pyJ6ZmQ5YWs5Y%2B4Oz4%2BOz47Oz47dDxwPHA8bDxUZXh0Oz47bDwwMjEtNjMyMzEwNzXmiJYwMjEtNjM1MTIxMTnovaw2MzA5LDYzMTA7Pj47Pjs7Pjs%2BPjs%2BPjs%2Bmin4IKkE4KjmjpTrMJdXwqOCt1M%3D" +
"&TextBox1=" + LoginName + "&Textbox2=" + Password + "&Button1=";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(new Uri(MyServer + "/Users_Login.aspx"));
webRequest.AllowAutoRedirect = true;
webRequest.ServicePoint.Expect100Continue = false;
webRequest.CookieContainer = cc;
webRequest.KeepAlive = true;
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.ContentLength = byteArray.Length;
Stream newStream = webRequest.GetRequestStream();
// Send the data.
newStream.Write(byteArray, 0, byteArray.Length);//写入参数
newStream.Close();

HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
StreamReader Sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
string CookieContainer;
string GetHtml = Sr.ReadToEnd();
Sr.Close();
CookieContainer = "";
foreach (Cookie i in webRequest.CookieContainer.GetCookies(new Uri(MyServer + "/Users_Login.aspx")))
{
CookieContainer += i.ToString() + ";";
}
if (CookieContainer.Length > 0)
CookieContainer = CookieContainer.Substring(0, CookieContainer.Length - 1);
response.Close();
...全文
372 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
dingzhiming 2008-08-05
  • 打赏
  • 举报
回复
to morixing :
我使用的是VS2008,是web test的测试类,可以实现你说的模拟aspx页面的request功能。
是在测试项目中执行的,VS2005中应该已经支持了。

甚至可以用自带的web test Recorder 进行request 录制,很简单的。
再生成code文件,自己修改成自己需要的样子。

提供你一个思路而已,希望对你有所帮助。
morixing 2008-08-05
  • 打赏
  • 举报
回复
谢谢24楼的代码下载,我现在不在公司,等我回去以后试验过了就回来结帖。
dingzhiming 2008-08-05
  • 打赏
  • 举报
回复
to morixing :
不是很清楚你的环境和具体需求。

但是应该在服务器中仅安装一个framework2.0或者3.5就可以了。
xhan2000 2008-08-05
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 jzywh 的回复:]
你先get一遍再post,否则ViewState永远都不对
[/Quote]

我说的就是这个意思,可以试一下
wxdxy 2008-08-05
  • 打赏
  • 举报
回复
问题解决了,lz公布一下
morixing 2008-08-05
  • 打赏
  • 举报
回复
dingzhiming
但是那个类是在VS下的,我虽然找到了,但是不可能在服务器也装一个VS啊,那样是不是……
wwd252 2008-08-04
  • 打赏
  • 举报
回复
mark
morixing 2008-08-04
  • 打赏
  • 举报
回复
自己顶一下别沉了
morixing 2008-08-04
  • 打赏
  • 举报
回复
dingzhiming
你说的类我找到了,问题是在我本机能够正常运行,放到服务器上却显示未能预编译,这是什么问题?还有你告诉我的那个类里面没有ExpectedResponseUrl的方法
request4Body.FormPostParameters.Add("blang", this.Context["$HIDDEN1.blang"].ToString());
request4Body.FormPostParameters.Add("issubmit", this.Context["$HIDDEN1.issubmit"].ToString());
也不能使用,难道你给的是2008的吗?
suyiming 2008-08-04
  • 打赏
  • 举报
回复
mark
morixing 2008-08-04
  • 打赏
  • 举报
回复
请问11楼的,FormPostHttpBody 这个类的命名空间在什么地方?另13楼的,相同页面的ViewState我已经看过了,永远都不会变,只要是同一个页面就永远是一样的,所以不是那个问题。
iuhxq 2008-08-04
  • 打赏
  • 举报
回复
你要完全模拟才行。
先模仿浏览器GET,包括验证码一类资源

然后填写相应数据后,再POST

有个代码:
...

本来想上SvnHost上找给你,结果发现我没发表这个代码

改天放上去
zzxap 2008-08-04
  • 打赏
  • 举报
回复
不要用ViewState,用session
w4585 2008-08-04
  • 打赏
  • 举报
回复
好深奥。。。
jzywh 2008-08-04
  • 打赏
  • 举报
回复
你先get一遍再post,否则ViewState永远都不对
fish_yht 2008-08-04
  • 打赏
  • 举报
回复
up
学习
dingzhiming 2008-08-04
  • 打赏
  • 举报
回复
.net有现成类WebTestRequest 可以调用的。


WebTestRequest request4 = new WebTestRequest("http://localhost/login.aspx");
request4.Method = "POST";
request4.ExpectedResponseUrl = "http://localhost/main.aspx";
request4.QueryStringParameters.Add("action", "login", false, false);
request4.QueryStringParameters.Add("u", "", false, false);
FormPostHttpBody request4Body = new FormPostHttpBody();
request4Body.FormPostParameters.Add("blang", this.Context["$HIDDEN1.blang"].ToString());
request4Body.FormPostParameters.Add("issubmit", this.Context["$HIDDEN1.issubmit"].ToString());
request4Body.FormPostParameters.Add("usercode", "admin");
request4Body.FormPostParameters.Add("logon", " login");
request4Body.FormPostParameters.Add("userpwd", "");
request4.Body = request4Body;
yield return request4;
request4 = null;

yagebu1983 2008-08-04
  • 打赏
  • 举报
回复
关注!!
morixing 2008-08-04
  • 打赏
  • 举报
回复
回7楼,这是模拟POST,我能改别人的web还模拟了做什么。
加载更多回复(8)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧