2017-08-07 17 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のエラーです。このエラーの原因を調べました。デシリアライズ用のjsonを受け取っていないようですが、実際はjsonではないようですが、このエラーは表示されます...しかし、しかし意味があります –

+0

私は使用しています: HttpResponseMessageの応答=クライアントを待っています.PostAsync( "mysite"、content); var converting = response.Content.ReadAsStringAsync()。結果; var user = JsonConvert.DeserializeObject (変換); –

+0

@JoycedeLanna受信した応答のタイプが不明な場合は、シリアル化して応答をチェックする前にブレークポイントをヒットします。そうでない場合は、郵便配達または同様の方法でチェックインしてください。 – Curiousity