

<https://dev.projectoxford.ai/docs/services/563879b61984550e40cbbe8d/operations/563879b61984550f3039523b>

を参考にC＃にてFace APIを使用する処理を作成しているのですが、  
この「Code samples」の

[code]

    // Request headers
    client.DefaultRequestHeaders.Add("Content-Type", "application/json");
    client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "{subscription key}");
    
[/code]

の部分にて  
{"Misused header name. Make sure request headers are used with
HttpRequestMessage, response headers with HttpResponseMessage, and content
headers with HttpContent objects."}  
という例外になります。

サンプルのコードがおかしいのでしょうか？それともほかに要因があるのでしょうか？


CC BY-SA 3.0
2015-12-24T06:51:11.717
20332
2015-12-24T07:15:41.630
13791
question
c#
HttpClientのDefaultRequestHeaders.Addにて「Misused header name」となる


`HttpClient`はヘッダーの意味ごとに設定すべき個所が異なります。これは`POST`しないのに`Content-
Type`ヘッダーが含まれるというような矛盾を発生させないためです。

[code]

    // Request body
    byte[] byteData = Encoding.UTF8.GetBytes("{body}");
    
    using (var content = new ByteArrayContent(byteData))
    {
       content.Headers.ContentType = new MediaTypeHeaderValue("< your content type, i.e. application/json >");
       response = await client.PostAsync(uri, content);
    }
    
[/code]

の部分は

[code]

    using (var content = new StringContent("{body}", Encoding.UTF8, "application/json"))
        response = await client.PostAsync(uri, content);
    
[/code]

と書くことでrequest bodyの`Content-Type`ヘッダーを設定できます。


CC BY-SA 3.0
2015-12-24T07:15:41.630
20333
2015-12-24T07:15:41.630
4236
20332
answer