How to Get byte array properly from an Web Api Method in C#?

前端 未结 7 1195
故里飘歌
故里飘歌 2020-11-30 01:49

I have the following controller method:

[HttpPost]
[Route("SomeRoute")]
public byte[] MyMethod([FromBody] string ID)
{
  byte[] mybytearray = db.get         


        
7条回答
  •  甜味超标
    2020-11-30 02:25

    HTTP is a text based protocol. edit: HTTP can transport raw bytes as well. Luaan's answer is better.

    The returned byte array will be converted into text in some way, depending on how the MediaTypeFormatterCollection is set up on the server and on the format requested by the HTTP client with the Accept header. The bytes will typically be converted to text by base64-encoding. The response may also be packaged further into JSON or XML, but the ratio of the expected length (528) to the actual length (706) seems to indicate a simple base64 string.

    On the client side, you are not looking at the original bytes but at the bytes of this text representation. I would try reading the data as a string with ReadAsStringAsync and inspect it to see what format it is in. Also look at the headers of the response.

    You should then parse this text accordingly to get the original bytes, e.g. with Convert.FromBase64String.

提交回复
热议问题