【发布时间】:2018-03-24 00:24:07
【问题描述】:
我想把这个captcha 放到一个图片框中,在 vb 中。 目的是访问网站并将验证码图像发送到程序,以便用户在 TextField 中写入验证码文本并访问网站内容。
有可能吗?? XD 我已经拥有的代码如下(它可以工作,但它没有得到验证码图像:() 谢谢大家,我感谢所有的帮助
Private Sub txtFileURL_TextChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtFileURL.KeyDown
If e.KeyCode = Keys.Enter Then
Dim fileURL As String = txtFileURL.Text
Dim fileName As String = My.Computer.FileSystem.GetName(fileURL)
Dim saveFolder As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
Dim saveFullPath As String = saveFolder + "\" + fileName
Try
My.Computer.Network.DownloadFile(fileURL, saveFullPath)
MsgBox("Saved in Desktop!")
Catch ex As Exception
MsgBox(ex.Message)
Dim file As System.IO.StreamWriter
file = My.Computer.FileSystem.OpenTextFileWriter("D:\test.txt", True)
file.WriteLine(ex.Message)
file.Close()
End Try
End If
End Sub
【问题讨论】:
-
“它可以工作,但它没有得到验证码图像”...如果它没有按照你的意愿做,那么你怎么能说它在工作?无论如何,出了什么问题?是否发生异常?我看到您正在捕获和抑制异常而不记录它们,因此您没有真正的方法来确定问题,除非通过调试器单步执行并在 Catch 块中停止以检查异常(但首先您必须声明它)。抑制像这样的意外错误是一种可怕的反模式,应该避免 - 它使故障排除变得非常困难。 至少记录异常。
-
使用上面的代码,我唯一不能做的就是下载生成的图像(验证码),这就是我希望程序做的事情。我更新了捕获的代码。这是一个例外:“www.captcha.com/demos/features/BotDetectCaptcha.ashx?get=image&c=c_captchademo_samplecaptcha&t=efccb902d2fe4059840ee492ca67da35”不是有效的远程文件地址。有效地址必须包含协议、路径和文件名。参数名称:地址
-
好吧,正如错误中提到的,您的 URL 中缺少协议。尝试在 URL 字符串的开头添加
http://(或https://,无论是哪个)。代码不知道在发出下载请求时使用哪些(或任何其他)协议。 -
天哪,我不敢相信!这太容易了。添加 http:// 解决了这个问题。就连我都因为如此轻松而感到难过。 THX ;)
标签: vb.net image visual-studio captcha