2016-08-05 11 views
0

私はXamarinandを初めて使っています。私は真剣に私を失っている基本に問題を見つけています。最初のステップで私を助けてくれますか? 私はgetコールをしています。文字列を返したいのですが、 'await'演算子はasyncメソッド内でのみ使用できます。あなたはコンストラクタで待つことができないので、私は本当にxamarin.formsxamarin forms get call

public class App : Application 
{ 
    public App() 
    { 
     // The root page of your application 
     MainPage = new ContentPage 
     { 
      Content = new StackLayout 
      { 
       VerticalOptions = LayoutOptions.Center, 
       Children = { 
        new Label { 
         HorizontalTextAlignment = TextAlignment.Center, 
         Text = "Welcome to Xamarin Forms!" 
        } 
       } 
      } 

     }; 

     string s = await MakeGetRequest("https://gig.com.qa/AndroidWebService/Services/IPhoneMarketInfo.aspx?id=1"); 
    } 



    public object DeserializeContent<T>(String stringToDeserialize) 
    { 
     DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(List<T>)); 
     MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(stringToDeserialize)); 
     return (List<T>)ser.ReadObject(stream); 
    } 

    public async Task<string> MakeGetRequest(string url) 
    { 
     var request = HttpWebRequest.Create(url); 

     HttpWebResponse response = await request.GetResponseAsync() as HttpWebResponse; 

     if (response.StatusCode == HttpStatusCode.OK) 
     { 
      using (StreamReader reader = new StreamReader(response.GetResponseStream())) 
      { 
       var content = reader.ReadToEnd(); 
       if (string.IsNullOrWhiteSpace(content)) 
       { 
        return response.StatusCode + "Response contained an empty body..."; 
       } 
       else 
       { 
        return content; 
       } 
      } 
     } 
     else 
     { 
      return response.StatusCode.ToString(); 
     } 
    } 


    public String SerializeContent(Object objectToSerialize) 
    { 
     return JsonConvert.SerializeObject(objectToSerialize); 
    } 


    public async Task<string> MakePostRequest(string url, string serializedDataString, bool isJson = true) 
    { 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
     if (isJson) 
      request.ContentType = "application/json"; 
     else 
      request.ContentType = "application/x-www-form-urlencoded"; 

     request.Method = "POST"; 
     var stream = await request.GetRequestStreamAsync(); 
     using (var writer = new StreamWriter(stream)) 
     { 
      writer.Write(serializedDataString); 
      writer.Flush(); 
      writer.Dispose(); 
     } 

     var response = await request.GetResponseAsync(); 
     var respStream = response.GetResponseStream(); 

     using (StreamReader sr = new StreamReader(respStream)) 
     { 
      return sr.ReadToEnd(); 
     } 
    } 

    protected override void OnStart() 
    { 
     // Handle when your app starts 
    } 

    protected override void OnSleep() 
    { 
     // Handle when your app sleeps 
    } 

    protected override void OnResume() 
    { 
     // Handle when your app resumes 
    } 
} 
+0

非同期/ C#の機能を待っています.XamarinやFormsの問題ではありません – Jason

答えて

0

での経験がない文字列を返す方法、それはOnStartメソッド(でそれをロードするために最善である)

protected override async void OnStart() 
{ 
    string s = await MakeGetRequest("https://gig.com.qa/AndroidWebService/Services/IPhoneMarketInfo.aspx?id=1"); 
} 
関連する問題