一般登陆网站时候首先要打开一个网页对吧?
我们提供的服务有:成都网站建设、网站设计、微信公众号开发、网站优化、网站认证、乳源ssl等。为数千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的乳源网站制作公司
那首先要 GET 一个网址。GetResponse后,得到的流就是这个页面的源码。
源码里肯定会包含这个验证码的提问段(可能是个图片的网址,也可能是个 5+5=? 之类的字符串之类的),可以分析一下这段代码出现的位置,让程序自动寻找。找到这个图片的网址,把这个图片 GET 下来,然后,就是orc识别或你人工识别咯。。。
建立ODBC数据源后,可以在Java程序中通过JDBC-ODBC接口连接数据裤:
//SQL Server
DriverManager.getConnection(''jdbc:sqlserver://主机\\实例名:端口号;
DatabaseName=数据库名'',''用户名'',''密码'')
在HttpWebRequest.GetResponse运行完毕之后,就表示网页已经加载完毕了。
如果是异步获取HttpWebResponse,那么在HttpWebRequest.EndGetResponse之后也表示网页加载完毕了。
Cookie丢了
登陆的时候,把CookieContainer保存下来,可以设置一个全局变量,然后再getBody的时候,
request.Cookiecontainer设置为这个CookieContainer即可
嘿嘿,试试下面这个api
Private Const INTERNET_COOKIE_HTTPONLY As Integer = H2000
SuppressUnmanagedCodeSecurity, SecurityCritical, DllImport("wininet.dll", EntryPoint:="InternetGetCookieExW", SetLastError:=True, ExactSpelling:=True)
Friend Function InternetGetCookieEx([In] Url As String, [In] cookieName As String, Out cookieData As StringBuilder, [In], Out ByRef pchCookieData As UInteger, flags As UInteger, reserved As IntPtr) As Boolean
End Function
''' summary
''' 获取webbrowser登录成功后的cookie,需要带上登录成功后的URL
''' /summary
''' param name="url"/param
''' returns/returns
SecurityCritical()
Public Function GetCookie(url As String) As String
Dim size As UInteger = 0
Dim sb As New StringBuilder
If InternetGetCookieEx(url, vbNullString, Nothing, size, INTERNET_COOKIE_HTTPONLY, IntPtr.Zero) Then '-- this always returns false
If size = 0 Then
Return Nothing
End If
sb = New StringBuilder(Convert.ToInt32(size) + 1)
If Not InternetGetCookieEx(url, vbNullString, sb, size, INTERNET_COOKIE_HTTPONLY, IntPtr.Zero) Then
Return Nothing
End If
End If
Dim lastErrorCode = Marshal.GetLastWin32Error '-- 259
Return sb.ToString()
End Function
另外,再给你一个函数
''' summary
''' 字符串型的cookie转换成cookie型的cookiecollection
''' /summary
''' param name="cookieStr"/param
''' param name="cookie"/param
''' param name="domain"/param
Public Sub StringToCookie(ByVal cookieStr As String, ByRef cookie As CookieContainer, ByVal domain As String)
cookie = New CookieContainer()
Debug.Print($"过程:{New StackTrace().GetFrame(0).GetMethod.Name} 转换cookie开始")
Try
Dim cookstr As String() = cookieStr.Split(";"c)
Dim cookieName As String = ""
Dim cookieValue As String = ""
For Each str As String In cookstr
cookieName = str.Substring(0, InStr(str, "=") - 1).Trim()
cookieValue = str.Substring(InStr(str, "="), str.Length - InStr(str, "=")).Trim()
Dim ck As New Cookie(cookieName, cookieValue)
'Debug.Print($"{cookieName} = {cookieValue}")
ck.Domain = domain
cookie.Add(ck)
Next
Debug.Print($"过程:{New StackTrace().GetFrame(0).GetMethod.Name} 转换cookie成功")
Catch ex As Exception
Debug.Print($"过程:{New StackTrace().GetFrame(0).GetMethod.Name} {ex.StackTrace.ToString()}")
Finally
Debug.Print($"过程:{New StackTrace().GetFrame(0).GetMethod.Name} 转换cookie结束")
End Try
End Sub
类,是面向对象思想的一个产物。它的用途,就在于把事物高度抽象。比如说游戏中的玩家,你可以定义一个玩家类,这个类,有自己的属性和方法,玩家的生命值,等级,金钱,等等等等,它可以有自己的方法,比如,可以跳跃,可以死亡。类,本身并不能存在于内存之中,这就解释了对象的问题。类,实例化以后,对象诞生,真实的存在于内存之中。你把一个玩家类实例化100次,诞生100个玩家在游戏中。这个关系,你可以简单的这么理解。