2015-10-16 2 views
1

У меня довольно простой класс WebAPI, который возвращает JSON для моих . Получите методов. Мой Сообщение метод:Почему я получаю нулевое значение из метода Post на веб-контроллере API?

// POST: api/Diff 
    public void Post([FromBody]string value) 
    { 
     System.Diagnostics.Debug.WriteLine(value); 
    } 

и я звоню оба метода из консольного приложения:

 using (var client = new HttpClient()) 
     { 
      // New code: 
      client.BaseAddress = new Uri("http://localhost:50541/"); 
      client.DefaultRequestHeaders.Accept.Clear(); 
      client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

      // New code: 
      HttpResponseMessage response = await client.GetAsync("api/diff/1"); 
      if (response.IsSuccessStatusCode) 
      { 
       var diff = await response.Content.ReadAsAsync<Diff>(); 
       Console.WriteLine("{0}\t${1}", diff.Text, diff.Revision); 
      } 

      var blah = new Diff() { Text = "Gizmo", Revision = 999}; 
      response = await client.PostAsJsonAsync("api/diff", blah); 

В Получить вызов работы. Я проверил в отладчике, что до метода PostAsJson обращается, что blah не имеет значения. Однако в отладчике по методу post API значение равно null.

ответ

2

Метод ожидал string:

public void Post([FromBody]string value) 

И вы отправляете ему Diff:

var blah = new Diff() { Text = "Gizmo", Revision = 999}; 
response = await client.PostAsJsonAsync("api/diff", blah); 

So ...

Либо изменить его ожидать Diff:

public void Post([FromBody]Diff value) 

или отправьте строку:

response = await client.PostAsJsonAsync("api/diff", new { value = "some string" }); 
2

Вы присылаете к контроллеру сложного объекта:

var blah = new Diff() { Text = "Gizmo", Revision = 999}; 

но ваш контроллер ожидает, что в теле запроса в есть только одна строка с именем «значением»:

public void Post([FromBody]string value) 

Возможным решением заключается в изменении параметра метода Post на объект Diff:

public void Post([FromBody]Diff diff) 
Смежные вопросы