vb.net post登录问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vb.net post登录问题相关的知识,希望对你有一定的参考价值。

同样的内容,通过WebBrowser1用post方式可以登录;但是通过HttpWebRequest总提示我输入验证码。通过抓包发现,用WebBrowser1 post数据时仅发送一次信息,通过HttpWebRequest总发送两次信息(head,body)。我已经将.ServicePoint.Expect100Continue = False。
附上代码,请帮忙看一看。
Function GetHttpStream(ByVal url As String) As Stream
requestScrape = CType(WebRequest.Create(url), HttpWebRequest)
With requestScrape
.ProtocolVersion = HttpVersion.Version11
.Accept = "text/html"
.Pipelined = True
.PreAuthenticate = True
.Method = "POST"
.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR '2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)"
.ContentType = "Content-Type: application/x-www-form-urlencoded"
.Host = ""
.ContentLength = 发送内容.Length
.CookieContainer = cc
.KeepAlive = True
.ServicePoint.Expect100Continue = False
.Timeout = 10000
.PreAuthenticate = False
.AllowWriteStreamBuffering = False
End With
'MsgBox(requestScrape.Connection)
Dim newStream As Stream = requestScrape.GetRequestStream()
newStream.Write(发送内容, 0, 发送内容.Length)
newStream.Close()
Try
responseScrape = CType(requestScrape.GetResponse(), HttpWebResponse)
Return (responseScrape.GetResponseStream())
Catch exp As Exception
Throw New Exception(exp.Message.ToString)
End Try
End Function

参考技术A 验证码输入错误,就已经很明确了
你post过去的验证码和你请求页面时候的验证码是不一样的
所以请检测你取验证码的方法追问

验证码是正确的,因为验证码错误返回的是“验证码错误”而不是“请输入验证码”。况且通过webbrows登录成功了。

追答

把你页面的地址发出来

检测 Windows 登录屏幕是不是对 VB.NET 中的用户可见

【中文标题】检测 Windows 登录屏幕是不是对 VB.NET 中的用户可见【英文标题】:Detecting if Windows Login Screen is visible to user in VB.NET检测 Windows 登录屏幕是否对 VB.NET 中的用户可见 【发布时间】:2011-08-12 20:12:19 【问题描述】:

你好 *** VB.NET 成员,

运行以下代码(锁定计算机)后,我必须应用什么代码才能查看用户是否已成功登录计算机以及我所谓的“锁定屏幕”是否消失了?

Private Declare Function LockWorkStation Lib "user32.dll" () As Long

Private Function LockComputer()
    LockWorkStation()
End Function

我将调用“LockComputer”,然后我该怎么做才能查看此功能调用的锁定屏幕(例如 2 分钟后)是否消失或仍然存在向用户询问密码!

谢谢, 阿克希特·苏塔

【问题讨论】:

【参考方案1】:

看看这个:http://msdn.microsoft.com/en-us/library/aa376875%28v=vs.85%29.aspx

上面写着:没有可以调用的函数来确定工作站是否被锁定。

但是:

要在用户登录时接收通知,请使用 WTSRegisterSessionNotification 函数接收 WM_WTSSESSION_CHANGE 消息。您可以使用会话通知来跟踪桌面状态,以便了解是否可以与用户交互。

【讨论】:

【参考方案2】:

你在MSDN documentation of LockWorkstation API读到过这个:

没有可以调用的函数 判断工作站是否 锁定。何时收到通知 用户登录,使用 WTSRegisterSessionNotification 接收函数 WM_WTSSESSION_CHANGE 消息。

【讨论】:

以上是关于vb.net post登录问题的主要内容,如果未能解决你的问题,请参考以下文章

VB .Net to PHP - 在 Intranet 上获取用户窗口登录

ASP.NET 登录以授予对特定类型人群的访问权限

请问VB.NET 怎么获取当前所有已登录到windows系统的用户名?

登录、电子邮件和密码验证无法与 SQL 表 Vb 一起正常工作

VB.NET怎样连接数据库

vb.net GET方法如何获取页面的cookies