1. ホーム
  2. c#

[解決済み] Web API サービスへの POST での json 送信エラー

2023-04-01 09:06:24

質問

Web APIを利用したWebサービスを作成しています。簡単なクラスを実装しました。

public class ActivityResult
{
    public String code;
    public int indexValue;
    public int primaryCodeReference;
}

そして、コントローラ内に実装した

[HttpPost]
public HttpResponseMessage Post(ActivityResult ar)
{
    return new HttpResponseMessage(HttpStatusCode.OK);
}

しかし、POSTでjsonというファイルを渡してAPIを呼び出すと。

{"code":"XXX-542","indexValue":"3","primaryCodeReference":"7"}

以下のようなエラーメッセージが表示されます。

{
    "Message": "The request entity's media type 'text/plain' is not supported for this resource.",
    "ExceptionMessage": "No MediaTypeFormatter is available to read an object of type 'ActivityResult' from content with media type 'text/plain'.",
    "ExceptionType": "System.Net.Http.UnsupportedMediaTypeException",
    "StackTrace": "   in System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent content, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n   in System.Net.Http.HttpContentExtensions.ReadAsAsync(HttpContent content, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n   in System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage request, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)"
}

私は何を間違えているのでしょうか?

どうすればいいのでしょうか?

HTTPリクエストで、Content-Typeを設定する必要があります。 Content-Type: application/json

ですから、もしあなたが fiddler クライアントを使用しているのなら、HTTP リクエストに Content-Type: application/json をリクエストヘッダに追加します。