2017-06-29 65 views
1

目前我正在學習如何開發跨平臺的應用程序 我碰到一個錯誤來了,我不知道這是否是錯誤或不 但是當我嘗試使用功能GetStringAsync作爲展示在下面的圖片 它會導致一個錯誤,任何人都可以幫忙嗎?Xamarin跨平臺PCL GetStringAsync錯誤

這裏是爲PCL項目我已經通過的NuGet Microsoft.Net.Http 和Android項目我已經加入System.Net.Http

我剛剛意識到,如果你想添加的代碼

protected override async void OnAppearing() 
{ 
    var client = new HttpClient(); 
    string a =await client.GetStringAsync("https://jsonplaceholder.typicode.com/posts"); 

    base.OnAppearing(); 
} 

在你的android項目中下載Microsoft.Net.Http 你需要先下載Microsoft.bcl.Build 首先,我做了BTW,但問題仍然存在。

+4

您沒有在您的帖子中包含代碼或錯誤消息,我們應該如何幫助您?請不要將它們作爲圖像發佈。 – Jason

回答

1

async void被允許在事件處理程序上。但是OnAppearing不是事件處理程序。它是頁面基類中的虛擬方法。但好處是OnAppearing方法實際上是在Appearing事件之前調用的。

因此在OnAppearing方法中訂閱頁面/視圖的Appearing事件。

protected override void OnAppearing() { 
    this.Appearing += Page_Appearing; 
} 

並在一個實際的偶數處理程序上調用你的異步代碼。

HttpClient client = new HttpClient(); 
private async void Page_Appearing(object sender, EventArgs e) { 
    //...call async code here 
    var url = "https://jsonplaceholder.typicode.com/posts"; 
    var a = await client.GetStringAsync(url); 

    //unsubscribing from the event 
    this.Appearing -= Page_Appearing; 
}