从数据流中获取字符串

J86*_*J86 0 vb.net stream asp.net-web-api

我通过 .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
Run Code Online (Sandbox Code Playgroud)

我能够调用 API,并获得 OK 状态,但我不知道如何将我的转换为VB 中的ResponseStreama ?String

Max*_*Max 5

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

'Convert stream to string
Dim reader As New StreamReader(response.GetResponseStream())
Dim streamText As String = reader.ReadToEnd()
Run Code Online (Sandbox Code Playgroud)

注意:这仅适用于 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
Run Code Online (Sandbox Code Playgroud)

上面的函数应该这样调用:

Dim streamText As String = MemoryStreamToString(response.GetResponseStream(), System.Encoding.ENCODINGTYPEHERE)
Run Code Online (Sandbox Code Playgroud)

转到此处了解有关编码 MSDN 的更多信息