Tôi có dịch vụ REST đọc tệp và gửi nó tới ứng dụng bảng điều khiển khác sau khi chuyển đổi thành mảng Byte và sau đó đến chuỗi Base64. Phần này xảy ra chính xác nhưng khi cùng một luồng được nhận tại ứng dụng, nó được xử lý và không còn là một chuỗi Base64 hợp lệ nữa. Một số ký tự rác đang được giới thiệu vào luồng.Đầu vào không phải là chuỗi Base-64 hợp lệ vì nó chứa một ký tự không phải là cơ sở 64
Ngoại lệ mà tôi nhận được khi chuyển đổi luồng ngược về Byte là “Dữ liệu nhập không phải là chuỗi Base-64 hợp lệ vì nó chứa ký tự không phải là 64, nhiều hơn hai ký tự đệm hoặc không trắng ký tự khoảng trắng giữa các ký tự đệm ”.
Tại dịch vụ:
[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;
}
Tại Ứng dụng:
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);
Có lẽ điều này đã làm với 'Encoding'. –
Bạn có biết "ký tự rác" nào đang được chèn vào không? –
Mã cập nhật hữu ích. Bây giờ chúng ta cần xem chuỗi mà bạn gửi (tức là 's' trên dịch vụ) và nội dung đã nhận được (tức là' result.content'. Bạn không cần phải đăng chuỗi toàn bộ, chỉ đến ký tự bị xé đầu tiên (hoặc, nếu vẫn còn quá dài, một số chất nền hiển thị nội dung được gửi và những gì đã nhận được) –