Веб-API для получения массива байтов
Я получаю ошибку HTTP 415 неподдерживаемый тип носителя в HttpResponseMessage.
Как заставить работать коды на стороне сервера?
HTTPClient используется для публикации данных байтового массива следующим образом...
использование(HttpClient c=new HttpClient()
{
c.DefaultRequestHeader.Accept.Add(new MediaTypeWithQualityHeaderValue("application/octet-stream)
byte[] Data=новый байт { 0x00, 0x01, 0x02... };
HttpResponseMessage r=await c.PostAsync("http://abc.com/api/File/Filename", new ByteArrayContent(данные);
if(r.IssuccessStatusCode) возвращает true;
возвращать false;
}
Серверная сторона(MVC/Razor) получает байтовый массив следующим образом
[HttpPost("{Имя Файла}")]
public async Task<int> Post([FromBody] string Filename)
{
MemoryStream ms=new MemoryStream((int)Request.Body.Длина);
жду запроса ... тело.CopyToAsync(МС);
байт[] b=ms.Метод toArray(); МС.рядом();
Файл.WriteAllBytesAsync("Data.bin", b);
возврат b.длина;
}
Что я уже пробовал:
Скомпилирован под управлением Visual Studio 2017 работает на рабочей станции Windows 10 Pro
Bryian Tan
Это может помочь в C# - пост байтового массива в веб-API сервера с помощью HttpClient - переполнение стека[^]
Member 8921416
Я видел этот пример и не видел полезных фрагментов кода на стороне сервера.
Клиентская сторона работает прямолинейно, используя HttpClient. Серверная сторона, кажется, даже терпит крах по запросу.Body.Длина аксессора
Richard Deeming
Почему ты связываешь их? Filename
параметр как для маршрута, так и для тела запроса, а также попытка прочитать тело запроса вручную?
Кроме того, установка заголовка "accept" в запросе сообщает серверу, какие форматы ответов он может отправить. Это не меняет того, какие форматы запросов сервер будет принимать.