从用户定义的 Web 地址获取 HTML 源代码






4.93/5 (29投票s)
一种从用户定义的 Web 地址获取 HTML 源代码的非常简单的方法。
引言
给我你的网络地址,我会将 HTML 源代码返回给你。本文将向你展示一种非常简单的方法来实现这一点。
背景
HTTP post 和 HTTP reply 是非常常见的概念。 一段时间前,我对这方面有点兴趣,所以尝试理解 .NET framework 库的特性。 这是一次绝佳的体验,它非常庞大!我的兴趣也随之提高。 突然间,我理解了 HttpWebRequest
和 HttpWebResponse
类的用途,它们位于 System.Net
命名空间中,并尝试实现这个想法。
Using the Code
这是一个非常简单的方法。我只是使用了以下类:
HttpWebRequest
HttpWebResponse
StreamReader
HttpWebRequest
为 WebRequest
类提供 HTTP 特定的实现。HttpWebRequest
类提供对 WebRequest
中定义的属性和方法的支持,以及额外的属性和方法,使用户能够直接与使用 HTTP 的服务器交互。
更多详细信息请参阅 此链接。
HttpWebResponse
为 WebResponse
类提供 HTTP 特定的实现。 此类包含对 WebResponse
类属性和方法的 HTTP 特定用途的支持。 HttpWebResponse
类用于构建 HTTP 独立客户端应用程序,这些应用程序发送 HTTP 请求并接收 HTTP 响应。
更多详细信息请参阅 此链接。
StreamReader
实现一个 TextReader
,该读取器以特定编码从字节流中读取字符。StreamReader
专为以特定编码的字符输入而设计,而 Stream
类专为字节输入和输出而设计。 使用 StreamReader
从标准文本文件读取信息行。
除非另有说明,否则 StreamReader
默认为 UTF-8 编码,而不是默认为当前系统的 ANSI 代码页。 UTF-8 正确处理 Unicode 字符,并在操作系统的本地化版本上提供一致的结果。
默认情况下,StreamReader
不是线程安全的。 请参阅 TextReader
..::.Synchronized 以获取线程安全的包装器。
Read(array<Char>[]()[], Int32, Int32)
和 Write(array<Char>[]()[], Int32, Int32)
方法重载读取和写入 count
参数指定的字符数。 这些与 BufferedStream
..::.Read 和 BufferedStream
..::.Write 区分开来,后者读取和写入 count
参数指定的字节数。 仅对读取和写入字节数组元素的整数倍使用 BufferedStream
方法。
更多详细信息请参阅 此链接。
示例代码
// Button event
Private Sub ButtonGet_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles ButtonGet.Click
Dim objGetSource As GetSource = New GetSource()
Try
If Me.TextBoxWebAddress.Text.Trim <> vbNullString Then
Me.RichTextBoxHTMLSource.Text = _
objGetSource.GetHTML(Me.TextBoxWebAddress.Text.Trim())
Me.WebBrowser1.Navigate(Me.TextBoxWebAddress.Text.Trim)
Me.WebBrowser1.Refresh()
End If
Catch ex As Exception
MessageBox.Show(ex.Message.ToString)
End Try
End Sub
// Get HTML Source class
Imports System
Imports System.IO
Imports System.Web
Public Class GetSource
Function GetHTML(ByVal strPage As String) As String
Dim strReply As String = "NULL"
'Dim objErr As ErrObject
Try
Dim objHttpRequest As System.Net.HttpWebRequest
Dim objHttpResponse As System.Net.HttpWebResponse
objHttpRequest = System.Net.HttpWebRequest.Create(strPage)
objHttpResponse = objHttpRequest.GetResponse
Dim objStrmReader As New StreamReader(objHttpResponse.GetResponseStream)
strReply = objStrmReader.ReadToEnd()
Catch ex As Exception
strReply = "ERROR! " + ex.Message.ToString
End Try
Return strReply
End Function
End Class
结论
我希望你喜欢它。 享受吧!
历史
- 2009 年 8 月 1 日:初始发布