方法一

Public Function getWebSource(ByVal url As String) As String
    Try
        Dim stream As IO.Stream = WebRequest.Create(url).GetResponse().GetResponseStream()
        Dim sr As StreamReader = New StreamReader(stream, System.Text.Encoding.UTF8)
        Return sr.ReadToEnd()
    Catch ex As Exception
        Return ""
        'Return ex.ToString()
    End Try
End Function

方法二

节选自网络,实测较慢

Public Function GetWebCode(ByVal strURL As String) As String
    Dim httpReq As System.Net.HttpWebRequest
    Dim httpResp As System.Net.HttpWebResponse
    Dim httpURL As New System.Uri(strURL)
    Dim ioS As System.IO.Stream, charSet As String, tCode As String
    Dim k() As Byte
    ReDim k(0)
    Dim dataQue As New Queue(Of Byte)
    httpReq = CType(WebRequest.Create(httpURL), HttpWebRequest)
    Dim sTime As Date = CDate("1990-09-21 00:00:00")
    httpReq.IfModifiedSince = sTime
    httpReq.Method = "GET"
    httpReq.Timeout = 7000

    Try
        httpResp = CType(httpReq.GetResponse(), HttpWebResponse)
    Catch
        Debug.Print("weberror")
        GetWebCode = "<title>no thing found</title>" : Exit Function
    End Try
    '以上为网络数据获取
    ioS = CType(httpResp.GetResponseStream, Stream)
    Do While ioS.CanRead = True
        Try
            dataQue.Enqueue(ioS.ReadByte)
        Catch
            Debug.Print("read error")
            Exit Do
        End Try
    Loop
    ReDim k(dataQue.Count - 1)
    For j As Integer = 0 To dataQue.Count - 1
        k(j) = dataQue.Dequeue
    Next
    '以上,为获取流中的的二进制数据
    tCode = Encoding.GetEncoding("UTF-8").GetString(k) '获取特定编码下的情况,毕竟UTF-8支持英文正常的显示
    charSet = Replace(GetByDiv2(tCode, "charset=", """"), """", "") '进行编码类型识别
    '以上,获取编码类型
    If charSet = "" Then 'defalt
        If httpResp.CharacterSet = "" Then
            tCode = Encoding.GetEncoding("UTF-8").GetString(k)
        Else
            tCode = Encoding.GetEncoding(httpResp.CharacterSet).GetString(k)
        End If
    Else
        tCode = Encoding.GetEncoding(charSet).GetString(k)
    End If
    Debug.Print(charSet)
    'Stop
    '以上,按照获得的编码类型进行数据转换
    '将得到的内容进行最后处理,比如判断是不是有出现字符串为空的情况
    GetWebCode = tCode
    If tCode = "" Then GetWebCode = "<title>no thing found</title>"
End Function

Public Function GetByDiv2(ByVal code As String, ByVal divBegin As String, ByVal divEnd As String) '获取分隔符所夹的内容[完成,未测试]
'仅用于获取编码数据
    Dim lgStart As Integer
    Dim lens As Integer
    Dim lgEnd As Integer
    lens = Len(divBegin)
    If InStr(1, code, divBegin) = 0 Then GetByDiv2 = "" : Exit Function
    lgStart = InStr(1, code, divBegin) + CInt(lens)

    lgEnd = InStr(lgStart + 1, code, divEnd)
    If lgEnd = 0 Then GetByDiv2 = "" : Exit Function
    GetByDiv2 = Mid(code, lgStart, lgEnd - lgStart)
End Function

标签: VB.net

已有 12 条评论

  1. 看的我热血沸腾啊https://www.jiwenlaw.com/

  2. 怎么收藏这篇文章?

  3. 想想你的文章写的特别好https://www.237fa.com/

  4. 看的我热血沸腾啊www.jiwenlaw.com

  5. 哈哈哈,写的太好了https://www.cscnn.com/

  6. 哈哈哈,写的太好了https://www.lawjida.com/

  7. 内容的丰富性和深度让人仿佛置身于知识的海洋,受益匪浅。

  8. 若能在案例选择上更贴近现实,说服力会进一步提升。

  9. 对生命本质的追问充满哲学思辨。

  10. 作者以简洁明了的语言,传达了深刻的思想和情感。

  11. 文章深入浅出,既有深度思考,又不乏广度覆盖,令人叹为观止。

  12. 这是一篇佳作,无论是从内容、语言还是结构上,都堪称完美。

添加新评论