POST call with application/octet-stream
Asked Answered
V

2

9

Hi I'm trying to trigger a POST call to the following API. and here's code

var client = new HttpClient();

client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/octet-stream"));
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", key);

var queryString = HttpUtility.ParseQueryString(string.Empty);
queryString["returnFaceId"] = "true";
queryString["returnFaceLandmarks"] = "false";
queryString["returnFaceAttributes"] = "age,gender";

var filebytes = File.ReadAllBytes(@"C:\Users\user1\Desktop\IMG.jpg");

var uri = "https://southeastasia.api.cognitive.microsoft.com/face/v1.0/detect?" + queryString;

HttpResponseMessage response;


using (var content = new ByteArrayContent(filebytes))
{
    response = client.PostAsync(uri, content).Result;
    var result = response.Content.ReadAsStringAsync().Result;
}

I get the following error in result:

{"error":{"code":"BadArgument","message":"JSON parsing error."}}

This code works fine if I use application/json, and pass a http link.

Ventriculus answered 14/8, 2018 at 9:30 Comment(0)
B
9

As the example code given by Microsoft, can you try to set ContentType like the sample :

using (var content = new ByteArrayContent(byteData))
{
     content.Headers.ContentType = new MediaTypeHeaderValue("< your content type, i.e. application/json >");
     response = await client.PostAsync(uri, content);
}
Baryram answered 14/8, 2018 at 9:53 Comment(1)
For whom be using this with Azure Computer Vision API (OCR / Read), and posting a binary data (image), the line should be content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");Yahrzeit
A
3

Try to set request content type as "application/octet-stream".

Arbor answered 14/8, 2018 at 9:38 Comment(2)
isn't it set this way client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/octet-stream"));?Ventriculus
"Accept: is what the browser is able to digest, for example, all the languages someone can understand." "Content-Type: is what format the actual data is in, for example what language someone is speaking. Since computers can't (well, now they can) recognize other types like people can say "oh, he's German!" or "she's speaking Chinese!"" from hereArbor

© 2022 - 2024 — McMap. All rights reserved.