2016-03-15 4 views
3

Я использую web api с идентификатором 2.0. Я хочу назначить несколько ролей для пользователя. Я использую почтовый клиент для общения с веб-api. В апи метод я использовал, чтобы получить идентификатор пользователя и роли для пользователя приводится ниже:Отправка массива строки из почтового клиента

public async Task<IHttpActionResult> AddRoleToUser(string userid,[FromUri] string[] selectedRoles) 

Здесь selectedRoles массив. От почтового клиента я передаю массив, как указано ниже: enter image description here

Я передаю идентификатор пользователя в URL-адресе. Я передаю массив ролей в правильном формате от почтового клиента? Вызов api был успешным, но selectedRoles всегда содержит нулевое значение. Я попытался с сырым JSON, как указано ниже, но не работал

enter image description here

Если я могу передать роли как сырым JSON, может любой показать пример

ответ

2

Первая проблема: вы указываете что массив selectedRoles поступает из URI (URL) с этим атрибутом: [FromUri]. Вам необходимо удалить этот атрибут, потому что вы отправляете его в тело запроса, а не в URL.

Действия Web API могут принимать только один параметр из тела запроса и любое количество параметров из URL-адреса. Поэтому вам необходимо передать параметр userid в качестве параметра строки запроса, например, ?userid=123123 и другого параметра в теле. (Вы также можете создать маршрут, который включает в себя userid, или получить userid в качестве параметра id и передать его в качестве сегмента URL, если вы используете маршрут умолчанию используется именно)

Кроме того, необходимо указать в своих заголовках формат информации, которую вы отправляете в теле. Поэтому вам нужно включить этот заголовок: Content-Type: application/json, потому что вы включаете JSON в свой тело запроса.

Наконец, как вы отправляете один параметр из тела, вы можете отправить его, как это:

['Admin', 'Employee'] 

Если вы хотите использовать формат, в вашем примере, вы shuould создать класс для использования в качестве параметра в ваших действиях, которые будут выглядеть следующим образом:

public class RoleList 
{ 
    public string[] selectedRoles { get; set; } 
} 

И ваши действия должны включать это в качестве параметра:

public async Task<IHttpActionResult> 
    AddRoleToUser(string userid, RoleList roleList) 
2

метод код в C#:

public void Put([FromBody]string[] selectedRoles) 
    { 
     foreach (var role in selectedRoles) 
     { 

     } 
    } 

вызвать метод в почтальона

в заголовок вкладки добавить параметр и Content-Type параметр со значением применение/х-WWW-форм-urlencoded

в закладке тела выберите сырые и JSON (приложение/JSON) затем в теле ящик dd ваш массив, как показано ниже: ['Admin', 'Employee']

Смежные вопросы