2016-08-11 1 views
0

JSON Postメソッドを使用してユーザー名とパスワードを投稿して、ログインしてトークンを取得できるようにしたいが、いくつか問題が発生する。Jsonと値を比較する方法xamarin.forms

public async Task<string> GetActionResult(string url) 
    { 
     Uri geturi = new Uri("http://172.20.129.193/NYPStudentLifeService/" + url); 
     var client = new HttpClient(); 
     HttpResponseMessage responseGet = await client.PostAsync(); 
     responseGet.EnsureSuccessStatusCode(); 
     string content = await responseGet.Content.ReadAsStringAsync(); 
     return content; 
    } 

サンプル本体のパラメータはJSON

{ 
"AdminNo": "sample string 1", 
"Password": "sample string 2" 
} 
+0

は、リクエストヘッダ、フォーマット、ボディなどのように、より多くの情報が必要... – Kowalski

+0

こんにちは、返信いただきありがとうございます!うまくいけば上の質問を更新しました –

+0

"geturi"というuriを作成しますが、実際には使用しません。あなたの実際のリクエストには全くURIがありませんので、もちろん動作しません。 uri(固定部分)の左部分をhttpクライアントオブジェクトのBaseURLとして設定し、右部分(urlパラメータ)を.PostAsync()呼び出しに置きます。文字列コンテンツオブジェクトを作成し、その中にJSON本体を挿入し、それを.PostAsync()にも渡します。また、この質問はXamarinにはまったく関連していません。フォームは、REST Webサービスを使用することに関連しています。 – irreal

答えて

0
using Newtonsoft.JSON; 

//your login info 
LoginInfo li = new LoginInfo(){AdminNo ="John Doe",Password="123456"}; 

// your response string 
string response= await GetStreamAsync("url",li,null); 

private async Task<string> GetStreamAsync(string url, object body, Dictionary<string, string> headers) 
{ 
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
    request.Accept = "application/json"; 
    request.ContentType = "application/json"; 
    request.Method = "POST"; 
    if (headers != null) 
     foreach (var kv in headers) 
      request.Headers[kv.Key] = kv.Value; 
    var stream = await request.GetRequestStreamAsync(); 

    using (var writer = new StreamWriter(stream)) 
    { 
     if (body != null) 
      writer.Write(JsonConvert.SerializeObject(body)); 
     writer.Flush(); 
     writer.Dispose(); 
    } 

    var response = await request.GetResponseAsync(); 
    var respStream = response.GetResponseStream(); 
    using (StreamReader sr = new StreamReader(respStream)) 
    { 
     return sr.ReadToEnd(); 
    } 
} 

public class LoginInfo 
{ 
    public string AdminNo{get;set;} 
    public string Password{get;set;} 
} 
関連する問題