API Web pour recevoir un tableau d’octets

la programmation


J’obtiens une erreur HTTP 415 Type de média non pris en charge dans le message HttpResponseMessage.
Comment faire fonctionner les codes côté serveur ?

HTTPClient est utilisé pour publier des données de tableau d’octets comme suit…

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

octet[] Données=nouvel octet { 0x00, 0x01, 0x02… } ;

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

if(r.IssuccessStatusCode) renvoie vrai ;
renvoie faux ;
}

Côté serveur (MVC/Razor) reçoit le tableau d’octets comme suit

[HttpPost(“{Filename}”)]

tâche asynchrone publique Post([FromBody] chaîne Nom de fichier)
{
MemoryStream ms=nouveau MemoryStream((int)Request.Body.Length);
attendre Request.Body.CopyToAsync(ms);

octet[] b=ms.ToArray(); ms.close();
File.WriteAllBytesAsync(“Data.bin”, b);
retourner b.Longueur;
}

Ce que j’ai essayé :

Compilé sous Visual Studio 2017 fonctionnant sur poste de travail Windows 10 Pro

Solution 1

Vous pouvez le faire aussi simplement que ceci

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

L’API Web gère assez bien le tableau d’octets comme paramètres d’entrée

コメント

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