我有一個REST服務,它讀取文件並將它轉換爲Byte數組,然後轉換爲Base64字符串後發送到另一個控制檯應用程序。這部分正確發生,但是當應用程序接收到相同的流時,它會被操縱,並且不再是有效的Base64字符串。一些垃圾字符正在引入流中。輸入不是有效的Base-64字符串,因爲它包含非基本64字符
將流轉換回字節時得到的異常是「輸入不是有效的Base-64字符串,因爲它包含非基本64字符,多於兩個填充字符或非白色填充字符之間的空格字符「。
在服務:
[WebGet(UriTemplate = "ReadFile/Convert", ResponseFormat = WebMessageFormat.Json)]
public string ExportToExcel()
{
string filetoexport = "D:\\SomeFile.xls";
byte[] data = File.ReadAllBytes(filetoexport);
var s = Convert.ToBase64String(data);
return s;
}
在應用:
var client = new RestClient("http://localhost:56877/User/");
var request = new RestRequest("ReadFile/Convert", RestSharp.Method.GET);
request.AddHeader("Accept", "application/Json");
request.AddHeader("Content-Type", "application/Json");
request.OnBeforeDeserialization = resp => {resp.ContentType = "application/Json";};
var result = client.Execute(request);
byte[] d = Convert.FromBase64String(result.Content);
這大概與'Encoding'做。 – 2013-02-27 14:08:09
你知道什麼「垃圾字符」被插入嗎? – 2013-02-27 14:10:14
更新的代碼很有幫助。現在我們需要看到你發送的字符串(即服務上的's')和接收到的內容(即'result.content')。你不需要發佈整個字符串,直到第一個被修改的字符(或者,如果這還太長,一些子字符串會顯示發送的內容和接收到的內容) – 2013-02-27 14:21:50