2017-01-05 16 views
1

私は「これは単純な文字列である」から、私は私のテキストはので、私はそれを通じやりたいたくさん長くなります注意してください(体で郵便配達を通じてポストをやろうとしています。このシンプルなアクションWeb Api C#に簡単な文字列を送信するには?

public void Post([FromBody] string t) 
{ 
    var test = t; 
} 

を持っています本文ではない)。

私はこのエラーに

{ 
    "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 'String' from content with media type 'text/plain'.", 
    "ExceptionType": "System.Net.Http.UnsupportedMediaTypeException", 
    "StackTrace": " at System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent content, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n at System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage request, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)" 
} 
+1

「要求エンティティのメディアタイプ 'text/plain'」というエラーメッセージが表示されます。それを受け入れるようにサービスを変更するか、PostmanにJSONなどの別のメディアタイプで送信するよう依頼してください。後者の方が、標準のASP.NET Web APIを使用しているように見えますが、そのデフォルトはJSONです。 –

+0

json(私が通常やっていること)を使うと、適切なjson形式が必要になります。私は単にデータのcsvファイルを送信しようとしています。 – chobo2

+0

その後、CSVファイルを受け入れる必要があります。 Web.APIを実行していて、送信するファイルが必要な場合は、 'string'ではなく' Stream'を受け入れる方がよいでしょう。 –

答えて

0

エラーメッセージの状態 "...リクエストのエンティティのメディアタイプ 'text/plainの'" を取得します。それを受け入れるようにサービスを変更するか、PostmanにJSONなどの別のメディアタイプで送信するよう依頼してください。後者の方が、標準のASP.NET Web APIを使用しているように見えますが、そのデフォルトはJSONです。

{ "t": "this is a simple string" } 

を...そして、あなたは甘いでしょう:

は、このデータを送信します。

0

@Quality Catalystに記載されているように、リクエストのコンテンツタイプを変更し、json形式で文字列を送信することができます。あなたがリクエストボディにプレーンテキストとして文字列を送ることができるようになりますその後

config.Formatters.Add(new PlainTextMediaTypeFormatter()); 

public class PlainTextMediaTypeFormatter : MediaTypeFormatter 
{ 
    public PlainTextMediaTypeFormatter() 
    { 
     SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/plain")); 
    } 

    public override bool CanReadType(Type type) 
    { 
     return type == typeof(string); 
    } 

    public override bool CanWriteType(Type type) 
    { 
     return false; // you can return true and override WriteToStreamAsync 
    } 

    public override Task<object> ReadFromStreamAsync(Type type, 
     Stream readStream, HttpContent content, IFormatterLogger formatterLogger, 
     CancellationToken cancellationToken) 
    { 
     var memoryStream = new MemoryStream(); 
     readStream.CopyTo(memoryStream); 
     return Task.FromResult((object)Encoding.UTF8.GetString(memoryStream.ToArray())); 
    }  
} 

そしてWebApiConfigで、このフォーマッタを登録しますかあなたはtext/plainのメディアタイプのフォーマッタを追加することができます。

関連する問題