7
votes

I am using Postman to send an array of string to a web API. The web API method looks like:

[HttpPost]
public async Task<IEnumerable<DocumentDTO>> GetDocuments([FromBody]IEnumerable<string> documentNames)
{
    return await _service.GetDocuments(documentNames);
}

I saw this SO post on how to send an array using Postman. Here is how I am sending the array: enter image description here

Fiddler shows the request's content type is multipart/form-data;

enter image description here

But I am getting an error response:

{ "Message": "The request entity's media type 'multipart/form-data' is not supported for this resource.", "ExceptionMessage": "No MediaTypeFormatter is available to read an object of type 'IEnumerable1' from content with media type 'multipart/form-data'.", "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)" }

I have tried setting the key as documentNames,documentNames[], documentNames[0].

I have tried selecting the body as x-www-form-urlencoded. When I do that, the API receives an empty collection.

I have tried selecting a body as raw. When I do that, the API receives null as a parameter.

Questions

  1. How do I send a string array using form-data?
  2. How do I send a string array using x-www-form-urlencoded?
  3. How do I send a string array as raw JSON?
3

3 Answers

19
votes

Pass it as JSON array and select the raw option like below

enter image description here

For a API method signature

    public void Post([FromBody] IEnumerable<string> value)
    {
      //some processing
    }
13
votes

if you want to initialize an array via params, you can do that.

use a variable with a same name

enter image description here

1
votes

Use same key in form remember add [] on it enter image description here