2016-06-02 2 views
1

У меня есть этот контроллер Web API:Почтальон Params не отправляется на контроллер Web API

public class LoginController : ApiController 
    { 
     private mw2devnew15Entities db = new mw2devnew15Entities(); 

     [System.Web.Http.HttpGet] 
     public string Post() 
     { 
      string authenticationToken = ""; 
      return authenticationToken; 
     } 


     [System.Web.Http.AcceptVerbs("GET", "POST")] 
     public HttpResponseMessage Post(JObject data) 
     { 
      dynamic json = data; 

      LoginForm loginF = new LoginForm(); 
      loginF.username = json.username; 
      loginF.password = json.password; 

      return Request.CreateResponse(HttpStatusCode.OK); 
     } 
    } 

Я могу правильно размещать с этим Ajax вызова:

jQuery.ajax({ 
      type: "POST", 
      url: "http://localhost:5832/api/Login", 
      data: JSON.stringify({ username: 'joep11aul1234', password: '1212213' }), 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (data) { 
       alert(data); 
      } 
     }); 

Но когда я пытаюсь для использования Postman для размещения вызова POST объект JObject имеет значение NULL.

enter image description here

Любая идея, почему?

ответ

2

Используя Postman, вы не воспроизводите тот же запрос, что и ваш код JavaScript, поскольку вы публикуете параметры в строке запроса. Что вам следует делать вместо этого что-то вроде этого:

Добавить заголовок типа контента со значением application/json:

enter image description here

и для тела запроса выберите raw, а затем добавить JSON:

enter image description here

это отправит следующий запрос таким же, как ваш код JavaScript:

POST /api/Login HTTP/1.1 
Host: localhost:5832 
Content-Type: application/json 
Cache-Control: no-cache 
Postman-Token: 4bf25ded-7548-77f9-3389-fa16a5d50087 

{ "username": "joep11aul1234", "password": "1212213" } 
+1

Спасибо! Вы мне очень помогли. Хороший день – Laziale

+0

@ Laziale Glad Я мог бы помочь. Счастливое кодирование :) – Nasreddine