Xamarin表格HttpClient卡住了

时间:2016-04-02 00:09:05

标签: c# xamarin httpwebrequest xamarin.forms dotnet-httpclient

我正在尝试从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所困扰。我该如何解决这个问题?

谢谢!

2 个答案:

答案 0 :(得分:1)

我只是在PCL中使用你的代码,我改变的只是url(到https)以满足iOS ATS要求,并从异步方法调用它。似乎在iOS设备上运行良好。我确实在PCL中获取了Microsoft.Net.Http的引用,并且在PCL 和特定于平台的项目中<{1>} (通过NuGet)。

您在某些PCL视图模型类中的代码:

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;
    }

...

}

希望这有帮助。

答案 1 :(得分:1)

我有同样的问题。我是通过以下方式解决的:

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

您可以尝试。