C# 单击按钮即可使用简单的web服务
我有一个带按钮的简单视图。当我点击按钮时,我想调用web服务并使用它的数据。我的看法是: 第1.xaml页C# 单击按钮即可使用简单的web服务,c#,json,xaml,xamarin,xamarin.forms,C#,Json,Xaml,Xamarin,Xamarin.forms,我有一个带按钮的简单视图。当我点击按钮时,我想调用web服务并使用它的数据。我的看法是: 第1.xaml页 <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="HelloWorld.Pages.Page1" xmlns:local="clr-namespace:Xama
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="HelloWorld.Pages.Page1"
xmlns:local="clr-namespace:Xamarin.Forms.Maps;assembly=Xamarin.Forms.Pages"
<StackLayout Padding="20, 10"
HorizontalOptions="Center">
<Button Clicked="B1_Clicked"
Text="Click Me" />
</StackLayout>
</ContentPage>
这是service.cs
public async Task<Data> GetInfoAsync()
{
DataInfo = null;
try
{
var client = new HttpClient();
HttpContent content = new StringContent("", Encoding.UTF8, "application/json");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = await client.PostAsync("https://www.getdata/feed", content);
response.EnsureSuccessStatusCode();
string json = await response.Content.ReadAsStringAsync();
data = JsonConvert.DeserializeObject<DataInfo>(json);
}
catch(Exception e)
{
Debug.WriteLine(e.Message.ToString());
}
Debug.WriteLine(data.data);
return data.data;
}
公共异步任务GetInfoAsync()
{
DataInfo=null;
尝试
{
var client=新的HttpClient();
HttpContent=newstringcontent(“,Encoding.UTF8,“application/json”);
client.DefaultRequestHeaders.Accept.Add(新的MediaTypeWithQualityHeaderValue(“应用程序/json”);
var response=wait client.PostAsync(“https://www.getdata/feed“,内容);
response.EnsureSuccessStatusCode();
string json=wait response.Content.ReadAsStringAsync();
data=JsonConvert.DeserializeObject(json);
}
捕获(例外e)
{
Debug.WriteLine(例如Message.ToString());
}
Debug.WriteLine(data.data);
返回数据.data;
}
我想这很简单,但我是xamarin的新手,所以请原谅我对知识的缺乏:)调用web服务最简单的方法是使用Refit 这个插件简化了调用web服务所需编写的代码 它还处理从Json到类的头传递和反序列化
如果您刚刚起步,我建议您在代码落后的道路上走得太远之前使用MVVM框架 您已经在调用该服务-您只需要从事件处理程序调用GetInfoAsync方法
private async void B1_Clicked(object sender, EventArgs e)
{
Service src = new Service();
var data = await src.GetInfoAsync();
}
这听起来像是你在问“如何调用Web服务”,答案是:“哪种Web服务?”@Christopher我添加了服务对不起:)我必须警告你异常处理。这段代码非常危险,因为在发生致命异常后,您将继续执行。一些你永远不应该尝试去做的事情。在将类似的内容发布到生产代码中之前,您应该阅读这两篇关于poper异常处理的文章:我已经拥有了服务。我不知道如何在page1.xaml.cs中调用它并使用它的数据:/Yes,Refit允许您调用该服务。这是一个庞大的主题,取决于服务的编写方式和端点的外观。链接上有很多不同的例子,我没有投反对票。我正在读你提供的关于改装的链接
private async void B1_Clicked(object sender, EventArgs e)
{
Service src = new Service();
var data = await src.GetInfoAsync();
}