从Web服务返回的字节数组中读取数据

时间:2014-04-15 16:50:53

标签: vb.net

我有一个Web服务,它返回字节数组中的数据。现在我想在我的控制台项目中读取该数据。我怎么能这样做,我已经添加了访问该Web服务的欲望引用。我正在使用vb .net VS2012.Thanks.My网络服务方法如下。

Public Function GetFile() As Byte()
        Dim response As Byte()
        Dim filePath As String = "D:\file.txt"
        response = File.ReadAllBytes(filePath)
        Return response
    End Function

1 个答案:

答案 0 :(得分:0)

类似的东西,

Dim result As String

Using (Dim data As New MemoryStream(response))
    Using (Dim reader As New StreamReader(data))
        result = reader.ReadToEnd()
    End Using    
End Using

如果你知道编码,我们可以说它是UTF-8,

Dim result = System.Text.UTF8Encoding.GetString(response)

继续你的评论后,我认为你是在宣称这一点。

Dim response As Byte() 'Is the bytes of a Base64 encoded string.

因此,我们知道所有字节都是有效的ASCII(因为它的Base64),所以字符串编码是可互换的。

Dim base64Encoded As String = System.Text.UTF8Encoding.GetString(response)

现在,base64Encoded是某些二进制文件的字符串Base64表示。

Dim decodedBinary As Byte() = Convert.FromBase64String(base64Encoded)

因此,我们已将编码的base64更改为它所代表的二进制文件。现在,因为我可以看到在你的例子中,你正在阅读一个名为"D:/file.txt"的文件,我将假设文件的内容是一个字符编码的字符串,但我不知道'知道字符串的编码。 StreamReader类在构造函数中有一些逻辑,可以对字符编码进行有根据的猜测。

Dim result As String

Using (Dim data As New MemoryStream(decodedBinary))
    Using (Dim reader As New StreamReader(data))
        result = reader.ReadToEnd()
    End Using    
End Using

希望现在result包含文本文件的上下文。