2010-01-03 54 views
0

vb.net问题,我已经打了对POST'ing数据一堵墙,一个WebForm :( 下面是我改编自许多地方(这里最近:http://p2p.wrox.com/asp-net-1-0-1-1-professional/34517-webrequest-webresponse-form-submit-problem-help.html)代码发布到Web表单

Dim url As String = "https://student.ashford.edu/student/" 
     Dim data As String = "username=myusername&password=mypassword" 
     Dim buffer As Byte() = Encoding.UTF8.GetBytes(data) 
     Dim result As String = "" 
     Dim req As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest) 
     req.Method = "POST" 
     req.ContentType = "application/x-www-form-urlencoded" 
     req.ContentLength = buffer.Length 
     req.CookieContainer = New CookieContainer() 
     ' enable cookies 
     Dim reqst As Stream = req.GetRequestStream() 
     ' add form data to request stream 
     reqst.Write(buffer, 0, buffer.Length) 
     reqst.Flush() 
     reqst.Close() 

     Console.WriteLine(vbLf & "Posting data to " & url) 
     Dim res As HttpWebResponse = DirectCast(req.GetResponse(), HttpWebResponse) 
     ' send request,get response 
     Console.WriteLine(vbLf & "Response stream is: " & vbLf) 
     Dim resst As Stream = res.GetResponseStream() 
     ' display HTTP response 
     Dim sr2 As New StreamReader(resst) 
     result = sr2.ReadToEnd() 
     Using writer As System.IO.StreamWriter = New StreamWriter("C:\Temp\checkcheck.html") 
      writer.Write(result) 
     End Using 

当我检查checkcheck.html文件时,它并没有显示我成功登录我的大学时通常看到的页面,而是再次显示登录页面,提示输入用户名和密码。对于用户/通过输出响应,是否意味着什么都没有发布?或者是登录按钮没有被命中?

只要源中的字段名称,用户名字段的名称是“用户名”,密码字段的名称是“密码”。从我所知道的,登录按钮本身的名称是“提交”。以下是网页的来源,我错过了什么?

查看源代码:https://student.ashford.edu/student/
https://student.ashford.edu/student/

我希望有发生的是,在我的VB.NET后台,我点击一个按钮,我的用户名和密码自动输入和我很自动地记录下来。一旦完成登录,我想检索已登录页面的HTML,以便我可以解析与我学习相关的项目。这可能是不相关的,但是如果我导航到其他页面,是否需要cookie来保持我的应用程序“登录”?

编辑: 我试图插入不同的URL,无济于事。我也尝试添加submit = login和login = submit(当然是交替)POST数据。我仍然从最后的结果变量中获取原始登录屏幕HTML,而不是我通常在手动登录后以人类身份登录的大学主页。也许有一个后续步骤,我失踪了?

回答

0

我发现我需要做什么。首先,我必须确保我有一个cookie容器。接下来,我使用Fiddler来准确找出在浏览器和我要登录的位置之间来回发送的内容。我发布了所有登录信息,然后我收到回复。这似乎用所需的身份验证cookie填充我的cookie容器变量?接下来,我对我想去的页面发出另一个POST请求,瞧 - 它的工作原理。

0

实际表单操作是https://student.ashford.edu/login/commands/login.php。您可以将其插入url。另外,请尝试在值中包含提交按钮 - submit=login

+0

这是我将数据发布到哪里?如在,我会将我的第一个URL变量设置为该地址?我只是将这个地址插入到URL变量中,并且我得到了同样的结果,将我转回到登录页面。 – 2010-01-03 02:20:19