65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.93/5 (29投票s)

2009年7月31日

CPOL

2分钟阅读

viewsIcon

54699

downloadIcon

2405

一种从用户定义的 Web 地址获取 HTML 源代码的非常简单的方法。

GetHtml

图 1:HTML 源代码

WebBrowser

图 2:Web 浏览器

引言

给我你的网络地址,我会将 HTML 源代码返回给你。本文将向你展示一种非常简单的方法来实现这一点。

背景

HTTP post 和 HTTP reply 是非常常见的概念。 一段时间前,我对这方面有点兴趣,所以尝试理解 .NET framework 库的特性。 这是一次绝佳的体验,它非常庞大!我的兴趣也随之提高。 突然间,我理解了 HttpWebRequest HttpWebResponse 类的用途,它们位于 System.Net 命名空间中,并尝试实现这个想法。

Using the Code

这是一个非常简单的方法。我只是使用了以下类:

  1. HttpWebRequest
  2. HttpWebResponse
  3. 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 日:初始发布
© . All rights reserved.