У меня есть метод контроллера, который возвращает байт [].Байт возврата [] из ASP.net MVC 4 WEB API-контроллер
[ActionName("testbytes")]
public byte[] GetTestBytes() {
var b = new byte[] {137, 80, 78, 71};
return b;
}
Когда я ударил api, я получаю следующий результат.
<base64Binary xmlns="http://schemas.microsoft.com/2003/10/Serialization/">iVBORw==</base64Binary>
Также, когда я ударил этот api из пользовательского HttpClient, я получаю 10 байтов в качестве ответа. Ниже приведен код пользовательского HttpClient.
public async Task<byte[]> GetTestBytes() {
var uri = "apiPath/testbytes";
using (var client = new HttpClient())
{
var httpResponse = await client.GetAsync(uri, HttpCompletionOption.ResponseContentRead);
if (httpResponse.IsSuccessStatusCode) {
var bytes = await httpResponse.Content.ReadAsByteArrayAsync();
}
return bytes;
}
return null;
}
Я ожидаю 4 байта, пока я получаю 10 байт в ответ.
Что вы ожидаете от 4 байтов? Это 4 байта. http://tomeko.net/online_tools/base64.php?lang=en – Aron
да. Я должен получить 4 байта, т. Е. 137, 80, 78, 71 –
Это 4 байта. Кодирование Base64 кодирует двоичные файлы в печатные символы, поэтому требуется 4 байта для хранения 4 байтов, в данном случае 10 байт. – Aron