2016-05-16 9 views
5

私はいつもボディからヌル値を得ているのですか? 私はフィドラーを使用しても問題はありませんが、postmanは失敗です。jsonデータを本文からウェブページへ投稿する

私はそのようなWeb APIを持っている:

[Route("api/account/GetToken/")] 
    [System.Web.Http.HttpPost] 
    public HttpResponseBody GetToken([FromBody] string value) 
    { 
     string result = value; 
    } 

私の郵便配達データ: enter image description here

とヘッダ: enter image description here

+1

は '入手トークンである必要はありません([FromBody]文字列のユーザー名、[ FromBody] string password) '?または、あなたは 'value'にjson文字列全体を含めることを期待しましたか? – Andrei

+0

私はjsonの文字列として書式設定されたbodyに自分のデータを渡したいと思っています。私のコードの問題は何ですか? – Mennan

答えて

8

WebAPIのあるあなたは、このJSONオブジェクト送っているということを言っているので、期待通りに働いて:あなたが求めている次に

{ "username":"admin", "password":"admin" } 

をそれは有効なJSON文字列ではないので不可能なstringとして逆シリアル化します。

解決方法1:

あなたがvalueの値のように実際のJSONを受信したい場合は次のようになります。その後、

value = "{ \"username\":\"admin\", \"password\":\"admin\" }" 

あなたが要求の本文を設定する必要がある文字列郵便配達には、次のとおりです。

"{ \"username\":\"admin\", \"password\":\"admin\" }" 

ソリューション2(私はこれを仮定していますあなたが欲しいものです):

WebAPIが適切に逆シリアル化できるようにJSONと一致するC#オブジェクトを作成します。この使用あなたの方法に続いて

public class Credentials 
{ 
    [JsonProperty("username")] 
    public string Username { get; set; } 

    [JsonProperty("password")] 
    public string Password { get; set; } 
} 

:まず、あなたのJSONに一致するクラスを作成

[Route("api/account/GetToken/")] 
[System.Web.Http.HttpPost] 
public HttpResponseBody GetToken([FromBody] Credentials credentials) 
{ 
    string username = credentials.Username; 
    string password = credentials.Password; 
} 
3

をあなたがオブジェクトを掲示し、それをバインドしようとしています文字列。 は代わりに、そのデータを表現するために型を作成:

public class Credentials 
{ 
    public string Username { get; set; } 
    public string Password { get; set; } 
} 

[Route("api/account/GetToken/")] 
[System.Web.Http.HttpPost] 
public HttpResponseBody GetToken([FromBody] Credentials value) 
{ 
    string result = value.Username; 
} 
関連する問題