Как отправить массив байтов с использованием метода HTTP PUT? Способ AddFile
класса RestRequest
отправляет дополнительные заголовки. Способ AddParameter
принимает тип Object
.C# RestSharp PUT метод и отправлять необработанные байты (protobuf)
Как это сделать:
byte[] data;
using (var ms = new MemoryStream())
{
Serializer.Serialize(ms, query);
data = ms.ToArray();
ms.Close();
}
var client = new RestClient(ServerPath);
var request = new RestRequest(RequestPath, Method.PUT);
request.AddFile("stream", x => new MemoryStream(data), string.Empty);
client.ExecuteAsync(request, responce => Debug.WriteLine(responce.Content));
Но на стороне сервера я вижу дополнительные заголовки
-------------------- ----------- 28947758029299 Content-Disposition: form-data; Name = "поток"; filename = "" Content-Type: application/octet-stream [RAW DATA HERE] ------------------------------ --28947758029299--
Дополнительные заголовки делают запрос нечитаемым. Что я делаю неправильно?
Что сервер * ожидая * это выглядеть? должен ли полезный груз быть сырым телом? использование 'AddFile' * предполагает *, на самом деле он ожидает многочастность, но это не соответствует указанному типу/типу контента. Например, это так же просто, как «WebClient» с 'client.UploadData (адрес,« PUT », данные);'? –
Сервер ожидает только необработанные данные, без заголовков. Если я использую сервер request.AddObject (data), см. Его как Length = 29 & Rank = 1 & SyncRoot = System.Byte% 5B% 5D & IsReadOnly = False & IsFixedSize = True & IsSynchronized = False – NikedLab
, если у вас нет заголовков, тогда это не похоже на HTTP. .. HTTP * имеет заголовки *. Наличие заголовков не должно чрезмерно влиять на него. –