发布到Web表单的vb.net问题

时间:2010-01-03 01:45:25

标签: vb.net cookies post webforms

我在将数据发布到网页上时遇到了障碍:( 以下是我从很多地方改编的代码(最近这里: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文件时,它没有显示我成功登录大学时通常看到的页面,而是再次显示登录页面,提示输入用户名和密码。由于它提示输出响应中的用户/传递,这是否表示没有发布任何内容?或者登录按钮没有被击中?

对于源中的字段名称,用户名字段的名称为“username”,密码字段的名称为“password”。据我所知,登录按钮本身的名称是“提交”。下面是页面的来源,我错过了什么吗?

view-source:https://student.ashford.edu/student/
https://student.ashford.edu/student/

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我发现了我需要做的事情。首先,我必须确保我有一个cookie容器。接下来,我使用Fiddler来确切地找到我的浏览器和我想要登录的地方之间来回发送的内容。我发布了所有的登录信息,然后我得到了回复。这似乎用我所需的身份验证cookie填满了我的cookie容器变量?接下来,我向我要去的页面发出另一个POST请求,瞧 - 它有效。