[英]C# RestSharp PUT method and send raw bytes (protobuf)
如何使用 HTTP PUT 方法發送字節數組? 方法AddFile
類的RestRequest
發送額外的頭。 方法AddParameter
采用Object
類型。
我是怎么做的:
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 內容配置:表單數據; 名稱=“流”; filename="" Content-Type: application/octet-stream [RAW DATA HERE] -------------------------------28947758029299 ——
額外的標題使查詢不可讀。 我做錯了什么?
感謝馬克·格拉維爾。 解決方案:
var client = new HttpClient(); var httpContent = new ByteArrayContent(data); client.PutAsync(Path, httpContent);
有時我為此苦苦掙扎,終於找到了解決方案,魔術是作為沒有參數名稱的請求正文提供
// file to send
IFormFile file
byte[] buffer;
using (var ms = new MemoryStream())
using (var stream = file.OpenReadStream())
{
stream.CopyTo(ms);
buffer = ms.ToArray();
}
var uploadDoc = new RestRequest("ressource", Method.POST);
uploadDoc.RequestFormat = DataFormat.None;
uploadDoc.AddParameter("", buffer, ParameterType.RequestBody);
var response = new RestClient("baseUrl").Execute(uploadDoc);
希望它能幫助別人
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.