Xamarin.forms 首先在Xamarin的HTTPClient上尝试。表单不起作用
我知道这应该很简单,所以我显然遗漏了一些东西 我正在编写一个非常简单的Xamarin.Forms应用程序,将其作为共享项目的Xamarin.forms 首先在Xamarin的HTTPClient上尝试。表单不起作用,xamarin.forms,httpclient,Xamarin.forms,Httpclient,我知道这应该很简单,所以我显然遗漏了一些东西 我正在编写一个非常简单的Xamarin.Forms应用程序,将其作为共享项目的MainPage.xaml.cs public partial class MainPage : ContentPage { public MyClass myClassInstance { get; set; } public MainPage() { InitializeComponent(); Downloa
MainPage.xaml.cs
public partial class MainPage : ContentPage
{
public MyClass myClassInstance { get; set; }
public MainPage()
{
InitializeComponent();
DownloadDataAsync();
}
private async void DownloadDataAsync()
{
string page = @"http://www.blaw.com:80/foo/bar";
try
{
HttpClient client = new HttpClient();
var uri = new Uri(string.Format(page, string.Empty));
var response = await client.GetAsync(uri); <--- BONK!
if (response.IsSuccessStatusCode)
{
var responseString = await response.Content.ReadAsStringAsync();
XmlSerializer ser = new XmlSerializer(typeof(MyClass));
using (TextReader tr = new StringReader(responseString))
{
myClassInstance = (MyClass)ser.Deserialize(tr);
}
}
else
System.Diagnostics.Debug.WriteLine(response.StatusCode.ToString());
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
}
}
public分部类主页面:ContentPage
{
公共MyClass myClassInstance{get;set;}
公共主页()
{
初始化组件();
下载DataAsync();
}
私有异步void DownloadDataAsync()
{
字符串页=@“http://www.blaw.com:80/foo/bar";
尝试
{
HttpClient=新的HttpClient();
var uri=新的uri(string.Format(page,string.Empty));
var response=await client.GetAsync(uri);从构造函数调用异步方法不是一个好主意。这将在控制台应用程序中起作用,但在UI应用程序中不起作用。因为这将阻止UI线程,并且由于死锁,控件永远不会返回到代码
如果您可以在OnAppearing中调用异步方法,它应该可以正常工作。您可以编写“uri”吗到控制台验证它是否是您期望的正确URL?此外,这是否在iOS设备上工作,或者您是否遇到相同的问题?我使用了断点来验证uri是否正确。此外,如果我在windows控制台应用程序中使用此代码,它工作正常。我还没有尝试为iOS编译…我要测试的iPhone不是这里还没有。一切看起来都很好。我建议尝试使用Postman点击端点,并验证您是否可以从中读取数据。然后我会检查是否在客户端配置上发送了正确的头。即使调用在InitializeComponent()调用之后,您也应该这样做吗?