首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GetResponseStream的读行

GetResponseStream的读行
EN

Stack Overflow用户
提问于 2013-02-01 02:16:58
回答 1查看 5.6K关注 0票数 0

我使用以下方法获取网页:

代码语言:javascript
复制
Dim request As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest)
request.CookieContainer = logincookie
Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
Dim reader As New StreamReader(response.GetResponseStream())
Dim thesource As String = reader.ReadToEnd

我在试着从源中提取数据。成功地保存了页面的源代码,但是,我不能使用每个循环循环遍历每一行,因为它只是用每个字符而不是每一行进行响应。

有人能建议怎么解决这个问题吗?谢谢各位斯坦。

EN

回答 1

Stack Overflow用户

发布于 2013-02-01 02:58:07

我有三种选择。

选项1.在While循环中逐行读取,而不是对每个循环进行读取。如果一切都将处于相同的功能中,请使用此方法。

代码语言:javascript
复制
Dim request As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest)
request.CookieContainer = logincookie
Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
Dim reader As New StreamReader(response.GetResponseStream())
Dim line As String = reader.ReadLine()

While line IsNot Nothing

    'Contents of your For Each loop go here

    line = reader.ReadLine()
End While

选项2:您至少有Visual 2012,并且希望返回此函数的结果,以便在调用此代码的代码中使用For每个循环。

代码语言:javascript
复制
Public Iterator Function GetUrl(ByVal url As String) As IEnumerable(Of String)

    Dim request As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest)
    request.CookieContainer = logincookie
    Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
    Dim reader As New StreamReader(response.GetResponseStream())
    Dim line As String = reader.ReadLine()

    While line IsNot Nothing

        Yield line
        line = reader.ReadLine()
    End While
End Function

就这样说吧:

代码语言:javascript
复制
For Each line As String In GetUrl("http://example.com")
    '...
Next line

选项3:您想从函数返回,就像前面的选项一样,但是不能使用新的迭代器语言特性。

代码语言:javascript
复制
Public Sub GetUrl(ByVal url As String, ByVal lineAction As Action(Of String))

    Dim request As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest)
    request.CookieContainer = logincookie
    Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
    Dim reader As New StreamReader(response.GetResponseStream())
    Dim line As String = reader.ReadLine()

    While line IsNot Nothing
        lineAction(line)
        line = reader.ReadLine()
    End While
End Sub

就这样说吧:

代码语言:javascript
复制
GetUrl("http://example.com", _
   Sub(l)
       'Do stuff here
   End Sub)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14638700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档