2014-04-15 1 views
0

바이트 배열로 데이터를 반환하는 웹 서비스가 있습니다. 이제는 내 콘솔 프로젝트에서 해당 데이터를 읽는 중입니다. 어떻게 할 수 있습니까? 이미 원하는 참조를 추가 할 수 있습니다. 그 웹 서비스에 액세스합니다. 나는 vb.net VS2012를 사용하고 있습니다. 고맙습니다. 내 웹 서비스 방법은 다음과 같습니다. 당신은 인코딩을 알고 있다면, 그것은 UTF-8이 할 수 있었다 말할 수웹 서비스에서 반환 된 바이트 배열에서 데이터 읽기

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

어떻게 표시 하시겠습니까? 웹 서비스는 어떻게 데이터를 인코딩합니까? 파일이 텍스트 파일입니까? 파일에서 어떤 인코딩을 사용합니까? – Jodrell

+0

콘솔에서 웹 서비스에 의해 반환 된 파일의 내용을 읽고 싶습니다. 인코딩은 base64Binary입니다. –

+0

그래서 웹 서비스는 Base64로 인코딩 된'String' 바이트를 포함하는'Byte()'를 반환합니까? – Jodrell

답변

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 

,

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에는 텍스트 파일의 컨텍스트가 포함되기를 바랍니다.

+0

이 작동하지 않습니다 –

+0

친절하게 도와주세요. 나는 심하게 당했다. –

+0

나는 당신의 의견을 후 대답을 확장했는데, 아직도 당신의 질문이 무엇인지 명확하게 밝히지 않았다. – Jodrell

관련 문제