2017-08-07 235 views
0

我有這個結構,我正在使用System.Net.HttpNewtonsoft以及。 我需要接收web服務響應,並將其轉換在我的課,但我不知道該怎麼做了HttpResponseMessage和我已經紅的職位並沒有幫助我。 這是一個Xamarin.forms項目。將HttpResponseMessage轉換爲對象

public static async Task<User> PostLoginAsync(string login, string senha) 
    { 
     using (var client = new HttpClient()) 
     { 
      try 
      { 
       login = "[email protected]"; 
       senha = "1111111"; 

       var content = new FormUrlEncodedContent(new[] 
        { 
         new KeyValuePair<string, string>("id", "1200"), 
         new KeyValuePair<string, string>("email", login), 
         new KeyValuePair<string, string>("password", senha), 
         new KeyValuePair<string, string>("json", "1"), 
        }); 

       HttpResponseMessage response = await client.PostAsync("http://ws.site.com", content); 

       return null; 
      } 

      catch (Exception ex) 
      { 
       Debug.WriteLine(ex.Message); 
       return null; 
      } 
     } 
    } 

我的課:

class User 
{ 
    public string codigo { get; set; } 
    public string nome { get; set; } 
    public string email { get; set; } 
    public string senha { get; set; } 
    public string imagem { get; set; } 
    public DateTime dataDeNasc { get; set;} 
    public string cidade { get; set; } 
    public string estado { get; set; } 
    public string telefone { get; set; } 
    public string sexo { get; set; } 
} 

如果你能幫助我...我對此表示讚賞。 謝謝反正

回答

1

你需要等待從HttpResponseMessage內容。

public static async Task<User> PostLoginAsync(string login, string senha) 
{ 
    using (var client = new HttpClient()) 
    { 
     try 
     { 
      login = "[email protected]"; 
      senha = "1111111"; 

      var content = new FormUrlEncodedContent(new[] 
       { 
        new KeyValuePair<string, string>("id", "1200"), 
        new KeyValuePair<string, string>("email", login), 
        new KeyValuePair<string, string>("password", senha), 
        new KeyValuePair<string, string>("json", "1"), 
       }); 

      HttpResponseMessage response = await client.PostAsync("http://ws.site.com", content); 

      var responseContent = await response.Content.ReadAsStringAsync(); 
      var user = JsonConvert.DeserializeObject<User>(responseContent); 

      return user; 
     } 
     catch (Exception ex) 
     { 
      Debug.WriteLine(ex.Message); 
      return null; 
     } 
    } 
} 
+0

「意外的字符在解析值遇到:<路徑 '',第0行,位置0」。 這是一個newtonsoft error..I搜索是什麼原因導致這個錯誤,似乎我沒有收到一個JSON進行反序列化,實際上它不是一個JSON,然後出現這個錯誤,但我可以是錯了,但有意義 –

+0

我使用: HttpResponseMessage響應=等待client.PostAsync( 「mysite的」,內容); VAR轉換= response.Content.ReadAsStringAsync()結果。 var user = JsonConvert.DeserializeObject (轉換); –

+0

@JoycedeLanna如果你不能確定你收到響應的類型,遇到斷點序列化和檢查響應或者在郵差或類似的方式檢查之前。 – Curiousity