4

HTTP PUT メソッドを使用してバイト配列を送信するには? AddFileクラスのメソッドはRestRequest追加のヘッダーを送信します。メソッドAddParameterObject型を取ります。

私はそれを行う方法:

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: フォームデータ。名前="ストリーム"; filename="" Content-Type: application/octet-stream [生データはこちら] -------------------------------28947758029299 --

余分なヘッダーがあると、クエリが判読できなくなります。私は何を間違っていますか?

4

2 に答える 2

5

マーク・グラベルに感謝します。解決:

        var client = new HttpClient();
        var httpContent = new ByteArrayContent(data);
        client.PutAsync(Path, httpContent);
于 2013-02-25T14:03:50.630 に答える
1

私は時々これに苦労し、最終的に魔法がパラメータ名なしでリクエストボディとして与えることである解決策を見つけました

// 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);

それが他の人を助けることができることを願っています

于 2020-07-10T19:11:13.503 に答える