我通过.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
?
答案 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