2016-11-05 13 views
0

私はAsp.Netを初めて使用しています。私は何をしたいですか?私はログインサービス用のWeb APIを持っています。これはjson Dataを返します。 Web APIをAsp.net MVC呼び出しログインWebサービス

http://localhost:55500/api/Login/submit?username=abc&password=abc123 

のサンプルURLは、それは私がAsp.NET MVCで私のログインページを認証するにはどうすればよい

[{"UserID":0, 
    "Status":"True", 
    "Name":"885032-59-6715", 
    "DepName":"Ajay"} 
] 

のようなJSONデータを返します。ログイン成功(ステータス:True)。ダッシュボードにリダイレクトし、jsonデータをビューページに表示する必要があります。 ログインが成功しない場合は、エラーメッセージ

私のASP.NET MVCモデルcalssファイル表示される必要があります。

namespace LoginPracticeApplication.Models{ 
    public class Login { 

    [Required(ErrorMessage = "Username is required")] // make the field required 
    [Display(Name = "username")] // Set the display name of the field 
    public string username { get; set; } 

    [Required(ErrorMessage = "Password is required")] 
    [Display(Name = "password")] 
    public string password { get; set; }  
    }} 

私のASP.NET MVCコントローラファイル:

public ActionResult Index(Login login) 
{ 
    if (ModelState.IsValid) // Check the model state for any validation errors 
    { 
     string uname = ""; 
     uname = login.username; 
     string pword = ""; 
     pword = login.password; 

     string url = "http://localhost:55506/api/Login/submit?username=" + uname + "&password=" + login.password + ""; 
     System.Net.Http.HttpClient client = new System.Net.Http.HttpClient(); 
     client.BaseAddress = new Uri(url); 
     client.DefaultRequestHeaders.Accept.Clear(); 
     client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); 
     HttpResponseMessage responseMessage = client.GetAsync(url).Result; 

     var responseData = responseMessage.Content.ReadAsStringAsync().Result; 
     if (responseData=="true") 
     {      
      return View("Show", login); // Return the "Show.cshtml" view if user is valid 
     } 
     else 
     { 
      ViewBag.Message = "Invalid Username or Password"; 
      return View(); //return the same view with message "Invalid Username or Password" 
     } 
    } 
    else 
    { 
     return View(); 
    } 
    return View(); 
} 

私はこのコードでログインしようとしました。常に「無効なユーザー名またはパスワード」が表示されます。あなたの助けを事前に感謝します。成功

+0

は 'json.net'(またはいくつかの他のライブラリ)を使用して、オブジェクトに' responseData'をデシリアライズして、 'status'プロパティをチェックする必要があります。また、クエリ文字列パラメータをURLエンコードする必要があります。 – Igor

答えて

1

のために楽しみにして私は、問題がであることを信じて:あなたはReadAsStringAsync()応答であるため

  var responseData = responseMessage.Content.ReadAsStringAsync().Result; 
      if (responseData=="true") 
      {      
       return View("Show", login); // Return the "Show.cshtml" view if user is valid 
      } 
      else 
      { 
       ViewBag.Message = "Invalid Username or Password"; 
       return View(); //return the same view with message "Invalid Username or Password" 
      } 

、おそらくあなたがテスト別名responseData=="true"ことを意味するもの[{"UserID":0,"Status":"True","Name":"885032-59-6715","DepName":"Ajay"}]を述べたJSONを返しています。 "[{"UserID":0,"Status":"True","Name":"885032-59-6715","DepName":"Ajay"}]" == "true"はfalseになります。

responseData.Contains("true")を使用できますが、これが最善のアプローチだとは思いません。

あなたはReadAsStringAsync()の後に、JsonConvert.DeserializeObject<LoginResultModel>(responseData);を通してオブジェクトに文字列(json)を逆シリアル化する必要があると思います。 JsonConvertはNewtonsoft.Jsonにあり、あなたはNugetを入手できます。 LoginResultModelでは、jsonを考慮して作成する必要があります。

public class LoginResultModel 
{ 
    public int UserID { get; set; } 

    public bool Status { get; set; } 

    public string Name { get; set; } 

    public string DepName { get; set; } 
} 

そして、あなたはあなたがLoginResultModelのリストにデシリアライズする必要があります配列を返すされているような:あなたはresponseDataだったデータを参照するには、デバッグを持つことができます。:JsonConvert.DeserializeObject<List<LoginResultModel>>(responseData);

PS私はそれはようなものになるだろうと信じてなぜそれが偽であると評価されたのかを理解している。あなたの下に掲載さdime2loとして

よろしく

+0

ありがとう!!!!それは今うまく動作します –

+0

大歓迎です。それが成功した場合、正しいものとして答えをチェックすることを忘れないでください。そうすれば、他の人が参考にすることができます。よろしく。 – dime2lo

関連する問題