从数据流中获取字符串

时间:2014-03-12 15:38:22

标签: vb.net asp.net-web-api stream

我通过.NET 3.5应用程序访问API,到目前为止,我的代码如下:

Dim strLink As String = "http://www.google.co.uk"

Dim request As WebRequest = System.Net.WebRequest.Create("http://random-web-api/controller/id")

Dim response As WebResponse = request.GetResponse()

If CType(response,HttpWebResponse).StatusCode = HttpStatusCode.OK Then

    Dim dataStream As Stream = response.GetResponseStream()

    ' How do I get the String from the Stream? 

    response.Close()
End If

我可以调用API,并获得OK状态,但我不知道如何将我的ResponseStream转换为VB中的String

2 个答案:

答案 0 :(得分:1)

我能想到的最简单的方法:

'Convert stream to string
Dim reader As New StreamReader(response.GetResponseStream())
Dim streamText As String = reader.ReadToEnd()

注意:这仅适用于ASCII编码。

编辑,你可以在你的应用程序中添加以下方法,这个方法允许使用编码参数。

Private Shared Function MemoryStreamToString(ms As MemoryStream, enc As Encoding) As String
    Return Convert.ToBase64String(enc.GetString(ms.GetBuffer(), 0, CInt(ms.Length)))
End Function

上面的函数应该像:

一样调用
Dim streamText As String = MemoryStreamToString(response.GetResponseStream(), System.Encoding.ENCODINGTYPEHERE)

转到此处了解有关Encoding MSDN

的更多信息

答案 1 :(得分:1)

要将流转换为字符串,您需要使用编码。不确定这是否是您正在寻找的

        Dim strReader As New StreamReader(dataStream, Encoding.UTF8)

        Dim yourString As String = strReader.ReadToEnd