2016-08-05 4 views
0

안녕하세요, 저는 Xamarinand를 처음 보았습니다. 정말 심각한 문제를 찾고 있습니다. 첫 단계를 도와주세요. get 호출을하고 있는데 문자열을 반환하고 싶지만 'await'연산자는 async 메서드에서만 사용할 수 있습니다. 문자열을 반환하는 방법을 난 정말xamarin 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

당신이 생성자에서 기다리고 수 없기 때문에 xamarin.forms 경험이없는, 그것은 ONSTART()

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