概述
相同,转自官网指南。本文演示了如何从Xamarin.Forms应用程序使用RESTful Web服务。
REST请求是通过HTTP使用Web浏览器用于检索网页并将数据发送到服务器的相同HTTP动词进行的。这些动词是:GET,POST,PUT,PATCH或DELETE。(都知道,就不解释了)
遵循REST的Web服务API称为RESTful API,并使用下面的定义:
1.基本的URI。
2.HTTP方法,如GET,POST,PUT,PATCH或DELETE。
3.数据的媒体类型,例如JavaScript对象表示法(JSON)。
REST风格的Web服务通常使用JSON消息将数据返回给客户端。JSON是一种基于文本的数据交换格式,可生成紧凑的有效负载,从而在发送数据时降低带宽要求。示例应用程序使用开源的NewtonSoft JSON.NET库来序列化和反序列化消息。
REST的简单性使其成为访问移动应用程序中的Web服务的主要方法。
在iOS 9及更高版本中,应用程序传输安全性(ATS)强制实施互联网资源(如应用程序的后端服务器)与应用程序之间的安全连接,从而防止意外泄露敏感信息。由于ATS在默认情况下在为iOS 9构建的应用程序中启用,所有连接都将受到ATS安全要求的限制。如果连接不符合这些要求,它们将失败,例外。
如果不能使用HTTPS协议和互联网资源的安全通信,ATS可以退出。这可以通过更新应用程序的Info.plist文件来实现。有关更多信息,请参阅App Transport Security。
使用Web服务
在HttpClient类用于发送和接收通过HTTP请求。它提供了发送HTTP请求和从URI标识的资源接收HTTP响应的功能。每个请求都是作为异步操作发送的。有关异步操作的更多信息,请参阅异步支持概述。
所述HttpResponseMessage类表示的HTTP请求作出后从所述web服务接收到的HTTP响应消息。它包含有关响应的信息,包括状态码,标题和任何正文。所述HttpContent类表示HTTP主体和内容报头,如Content-Type和Content-Encoding。内容可以使用任何ReadAs方法读取,例如ReadAsStringAsync和ReadAsByteArrayAsync,取决于数据的格式。
创建HTTPClient对象
该HttpClient实例在类级别声明,只要应用程序需要发出HTTP请求,该对象就存在,如以下代码示例所示:
public class RestService : IRestService
{
HttpClient client;
...
public RestService ()
{
client = new HttpClient ();
client.MaxResponseContentBufferSize = 256000;
}
...
}
该HttpClient.MaxResponseContentBufferSize属性用于指定读取HTTP响应消息中的内容时要缓冲的最大字节数。此属性的默认大小是整数的最大大小。因此,为了限制应用程序将接受作为Web服务响应的数据量,将该属性设置为较小的值作为安全措施。
检索数据
该HttpClient.GetAsync方法用于将GET请求发送到由URI指定的Web服务,然后接收来自Web服务的响应,如以下代码示例所示:
public async Task<List<TodoItem>> RefreshDataAsync ()
{
...
// RestUrl = http://developer.xamarin.com:8081/api/todoitems/
var uri = new Uri (string.Format (Constants.RestUrl, string.Empty));
...
var response = await client.GetAsync (uri);
if (response.IsSuccessStatusCode) {
var content = await response.Content.ReadAsStringAsync ();
Items = JsonConvert.DeserializeObject <List<TodoItem>> (content);
}
...
}
REST服务在HttpResponseMessage.IsSuccessStatusCode属性中发送HTTP状态码,以指示HTTP请求是成功还是失败。对于此操作,REST服务会在响应中发送HTTP状态码200(OK),表示请求成功,请求的信息在响应中。
如果HTTP操作成功,则读取响应的内容以进行显示。该HttpResponseMessage.Content属性表示HTTP响应的内容,并且该HttpContent.ReadAsStringAsync方法将HTTP内容异步写入字符串。这个内容然后从JSON转换List为TodoItem实例。
创建数据
该HttpClient.PostAsync方法用于将POST请求发送到由URI指定的Web服务,然后接收来自Web服务的响应,如以下代码示例所示:
public async Task SaveTodoItemAsync (TodoItem item, bool isNewItem = false)
{
// RestUrl = http://developer.xamarin.com:8081/api/todoitems/
var uri = new Uri (string.Format (Constants.RestUrl, string.Empty));
...
var json = JsonConvert.SerializeObject (item);
var content = new StringContent (json, Encoding.UTF8, "application/json");
HttpResponseMessage response = null;
if (isNewItem) {
response = await client.PostAsync (uri, content);
}
...
if (response.IsSuccessStatusCode) {
Debug.WriteLine (@" TodoItem successfully saved.");
}
...
}
该TodoItem实例被转换为JSON有效负载以发送到Web服务。然后,该有效负载将被嵌入HTTP请求与该PostAsync方法进行发送之前将被发送到Web服务的内容。
REST服务在HttpResponseMessage.IsSuccessStatusCode属性中发送HTTP状态码,以指示HTTP请求是成功还是失败。这个操作的共同反应是:
201(CREATED) - 请求导致在发送响应之前创建新的资源。
400(BAD REQUEST) - 请求不被服务器理解。
409(CONFLICT) - 由于服务器上的冲突,请求无法执行。
更新数据
该HttpClient.PutAsync方法用于将PUT请求发送到由URI指定的Web服务,然后接收来自Web服务的响应,如以下代码示例所示:
public async Task SaveTodoItemAsync (TodoItem item, bool isNewItem = false)
{
...
response = await client.PutAsync (uri, content);
...
}
该PutAsync方法的操作与PostAsync用于在Web服务中创建数据的方法相同。但是,从Web服务发送的可能响应不同。
REST服务在HttpResponseMessage.IsSuccessStatusCode属性中发送HTTP状态码,以指示HTTP请求是成功还是失败。这个操作的共同反应是:
204(无内容) - 请求已成功处理,响应有意空白。
400(BAD REQUEST) - 请求不被服务器理解。
404(NOT FOUND) - 请求的资源在服务器上不存在。
废除数据
该HttpClient.DeleteAsync方法用于将DELETE请求发送到由URI指定的Web服务,然后接收来自Web服务的响应,如以下代码示例所示:
public async Task DeleteTodoItemAsync (string id)
{
// RestUrl = http://developer.xamarin.com:8081/api/todoitems/{0}
var uri = new Uri (string.Format (Constants.RestUrl, id));
...
var response = await client.DeleteAsync (uri);
if (response.IsSuccessStatusCode) {
Debug.WriteLine (@" TodoItem successfully deleted.");
}
...
}
REST服务在HttpResponseMessage.IsSuccessStatusCode属性中发送HTTP状态码,以指示HTTP请求是成功还是失败。这个操作的共同反应是:
204(无内容) - 请求已成功处理,响应有意空白。
400(BAD REQUEST) - 请求不被服务器理解。
404(NOT FOUND) - 请求的资源在服务器上不存在。
概要
本文介绍了如何使用HttpClient类从Xamarin.Forms应用程序中使用REST风格的Web服务。REST的简单性使其成为访问移动应用程序中的Web服务的主要方法。
最后
以上就是典雅酒窝为你收集整理的Xamarin使用HttpClient类使用Web服务概要的全部内容,希望文章能够帮你解决Xamarin使用HttpClient类使用Web服务概要所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复