マンモス展
Created at:
4万年以上前の仔ウマが丸ごと出てくるのすごい。
音声ガイドを東山奈央さんがナビゲートされていたので折角なので借りてみました。ジュニアガイドとはいえTips的な話もあり、比較的ライトな雰囲気はこれはこれで良かったです。
Created at:
4万年以上前の仔ウマが丸ごと出てくるのすごい。
音声ガイドを東山奈央さんがナビゲートされていたので折角なので借りてみました。ジュニアガイドとはいえTips的な話もあり、比較的ライトな雰囲気はこれはこれで良かったです。
Created at:
HttpClient
の StringContent
は自動で Content-Type
に charset=<encoding>
を付けるStringContent.Headers.ContentType
を手で設定しなおす必要があるHttpClient
でとある API (POST) を呼び出すとなぜか動かない… curl
で同じ内容を投げると動くのに…という相談を受けて、そんな不思議なことが?と思って調べてみたのが始まりでした。
curl
で動いているなら .NET の HttpClient が投げるものが何か違うのではと思って、リクエストやリクエストを作っているところを確認してみました。
// Initialize the 'Content-Type' header with information provided by parameters.
MediaTypeHeaderValue headerValue = new MediaTypeHeaderValue((mediaType == null) ? DefaultMediaType : mediaType);
headerValue.CharSet = (encoding == null) ? HttpContent.DefaultStringEncoding.WebName : encoding.WebName;
Headers.ContentType = headerValue;
StringContent
クラスのコンストラクターのコードではメディアタイプとともに CharSet
プロパティを設定したものをヘッダーの ContentType
プロパティに設定しています。この CharSet
プロパティは Content-Type の charset 指定になります。
つまり StringContent
クラスを使って投げるリクエストを作るとデフォルトで application/json; charset=utf-8
のような Content-Type で送られるということになります。
ContentType
を再設定するcharset
パラメータが必ずついてしまうということが分かったので、付けずにリクエストを送信したいという場合にはこれを変える必要があります。
といってもやることは簡単で後から手動で ContentType
プロパティを再設定してあげれば大丈夫です。
content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");