【发布时间】:2010-01-03 01:45:25
【问题描述】:
我在将数据发布到网络表单时遇到了困难:( 下面是我从很多地方改编的代码(最近在这里:http://p2p.wrox.com/asp-net-1-0-1-1-professional/34517-webrequest-webresponse-form-submit-problem-help.html)
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,而不是我通常像人类一样手动登录后所期望的大学主页。也许我缺少后续步骤?
【问题讨论】:
标签: vb.net cookies post webforms