【解決方法】バイト配列を受け取るWeb API

プログラミングQA


HttpResponseMessage で HTTP エラー 415 Unsupported Media Type が発生します。
サーバー側のコードを機能させるにはどうすればよいですか?

HTTPClient は、次のようにバイト配列データをポストするために使用されます…

using(HttpClient c=new HttpClient()
{
c.DefaultRequestHeader.Accept.Add(new MediaTypeWithQualityHeaderValue(“application/octet-stream)

バイト[] データ = 新しいバイト { 0x00, 0x01, 0x02… };

HttpResponseMessage r=await c.PostAsync(“http://abc.com/api/File/Filename”, new ByteArrayContent(Data);

if(r.IssuccessStatusCode) は true を返します。
false を返します。
}

サーバー側(MVC/Razor)は次のようにバイト配列を受け取ります

[HttpPost(“{Filename}”)]

public async Task Post([FromBody] 文字列ファイル名)
{
MemoryStream ms=new MemoryStream((int)Request.Body.Length);
Request.Body.CopyToAsync(ms); を待ちます。

バイト[] b=ms.ToArray(); ms.close();
File.WriteAllBytesAsync(“Data.bin”, b);
b.長さを返します。
}

私が試したこと:

Windows 10 Pro ワークステーションで実行される Visual Studio 2017 でコンパイル

解決策 1

これと同じくらい簡単に実行できます

C#
[HttpPost]
public void Post(byte[] bytes)
{
   //your code
}

Web APIはバイト配列を入力パラメータとして適切に処理します

コメント

タイトルとURLをコピーしました