簡體   English   中英

C# RestSharp PUT 方法並發送原始字節(protobuf)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM