簡體   English   中英

Xamarin表格HttpClient卡住

[英]Xamarin Form HttpClient Stuck

我正在嘗試從soundcloud API獲得響應。 這是我的代碼。

public static async Task<string> GetTheGoodStuff()
  {
     var client = new HttpClient(new NativeMessageHandler());
     var response = await client.GetAsync("http://api.soundcloud.com/playlists?client_id=17ecae4040e171a5cf25dd0f1ee47f7e&limit=1");
     var responseString = response.Content.ReadAsStringAsync().Result;
     return responseString;
   }

但這卡在var response = await client.GetAsync 我怎樣才能解決這個問題?

謝謝!

我只是在PCL中使用了您的代碼,僅更改了滿足iOS ATS要求的URL(到https ),並從異步方法中對其進行了調用。 似乎可以在iOS設備上正常運行。 我確實在PCL中抓取了對Microsoft.Net.Http引用,並在PCL 和特定於平台的項目 (通過NuGet)中抓取了對ModernHttpClient引用。

您在某些PCL視圖模型類中的代碼:

using System.Net.Http;
using System.Threading.Tasks;
using ModernHttpClient;

public class ItemsViewModel
{

...

    public async Task<string> GetPlaylist()
    {
        // Use https to satisfy iOS ATS requirements.
        var client = new HttpClient(new NativeMessageHandler());
        var response = await client.GetAsync("https://api.soundcloud.com/playlists?client_id=17ecae4040e171a5cf25dd0f1ee47f7e&limit=1");
        var responseString = await response.Content.ReadAsStringAsync();
        return responseString;
    }

...

}

然后在實例化並使用視圖模型實例的PCL頁面類中:

public partial class ItemsPage : ContentPage
{
    public ItemsPage()
    {
        InitializeComponent();
        Vm = new ItemsViewModel();
        BindingContext = Vm;
    }

    protected override async void OnAppearing()
    {
        var playlist = await Vm.GetPlaylist();
        // Do something cool with the string, maybe some data binding.
    }

    // Public for data binding.
    public ItemsViewModel Vm { get; private set; }
}

希望這可以幫助。

我也有同樣的問題。 我通過以下方式修復它:

var response = httpClient.GetAsync(ApiUrl).ConfigureAwait(false).GetAwaiter().GetResult();

你可以試試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM