对所有支持的语言使用更简单的HTTP实现、更轻松的应用程序通信、用于基于位置的移动解决方案和开发普遍连接的应用程序的新API。Windows8.1预览版中的新功能或更新新的HTTP客户端API自定义HTTP请求过滤器后台传输更新实时通信更新连接待机更新地理围栏直接Wi-Fi支持新的HTTP客户端APIWindows8.1预览版引入了.Web.Http,Windows的Windows运行时命名空间连接到HTTP的应用程序和表述性状态传输(REST)Web服务。这个新的API以所有支持的语言提供对Windows8所有功能的支持,并取代了最初为Windows8发布的HTTPAPI。对于基本的请求操作,新的API有一个简单的接口来处理最常见的任务,并提供合理的适用于大多数情况的身份验证(AUTH)默认值。对于更复杂的HTTP操作,其他功能包括:执行常见操作的方法(DELETE、GET、PUT和POST)支持常见的身份验证设置和模式删除cookie异步方法上提供的HTTP请求进度信息Windows.Web.Http.Headers命名空间支持创建HTTP标头和CookiesHeaders和Cookie作为属性与HttpRequestMessage和HttpResponseMessage对象相关联。下面的示例代码展示了如何使用新的API创建一个基本的HTTPGET请求,然后通过新的API以字符串的形式获取Web服务器的内容。JavaScript:varuri=newUri("http://example.com/datalist.aspx");varhttpClient=newHttpClient();//总是捕获asyncmethods.httpClient.GetStringAsync(uri).done(function(){//Getcompletedoperation.},onError);functiononError(reason){//Detailsinreason.Messageandex.HResult.}C++:usingnamespaceWindows::Foundation;usingnamespaceWindows::Web::Http;uri=refnewUri("http://example.com/datalist.aspx");httpClient=refnewHttpClient();//Alwaysnetworkexceptionsforasyncmethods.try{httpClient->GetStringAsync(uri);}catch{//Detailsinex.Messageandex.HResult.}C#:usingSystem;usingWindows.Foundation;usingWindows.Web.http;varuri=newUri("http://example.com/datalist.aspx");varhttpClient=newHttpClient();//Alwayscatchnetworkexceptionsforasyncmethods.try{varresult=awaithttpClient.GetStringAsync(uri);}catch{//Detailsinex.Messageandex.HResult.}fromDefiningHTTPRequestFilters使用新的Windows.Web.Http.Filters命名空间支持的Web请求过滤器模型,更容易生成Web对特定连接和安全场景的请求,例如简单:处理身份验证限制对计量网络的访问支持模拟等现代编程技术连接失败后自动重试通常很容易预测请求期间可能出现的网络或安全状况,但处理多个网络或安全状况可能很困难.您可以使用这个新的API创建简单的过滤器,然后根据需要链接它们。这样你就可以为预期的复杂情况开发一些网络请求功能,而不必开发非常复杂的程序。HttpClient是通过HTTP发送和接收请求的主要类。它使用HttpBaseProtocolFilter类来确定如何发送和接收数据。所以HttpBaseProtocolFilter在逻辑上是所有自定义过滤器链的末端。每个HttpClient实例都可以有不同的过滤器链或管道,如下所示。要编写自定义过滤器,您需要创建IHttpFilter接口的自定义版本。使用IHttpFilter.SendRequestAsync方法指定过滤器的工作方式。您可以使用C#(或VisualBasic.NET)或C++编写过滤器。这些过滤器可以在Windows运行时支持的所有语言中调用和使用。#p#以下是将自定义标头添加到HTTP请求和响应的过滤器的示例代码。publicclassPlugInFilter:IHttpFilter{privateIHttpFilterinnerFilter;publicPlugInFilter(IHttpFilterinnerFilter){if(innerFilter==null){thrownewArgumentException("innerFiltercannotbenull.");}this.innerFilter=innerFilter;}publicIAsyncOperationWithProgressSendRequestAsync(HttpRequestMessagerequest){returnAsyncInfo.Run(async(cancellationToken,progress)=>{request.Headers.Add("Custom-Header","CustomRequestValue");HttpResponseMessageresponse=awaitinnerFilter.SendRequestAsync(request).AsTask(cancellationCancellationTokenccancprogressT,progressf)(;响应.Headers.Add("Custom-Header","CustomResponseValue");returnresponse;});}publicvoidDispose(){innerFilter.Dispose();GC.SuppressFinalize(this);}}要使用这个过滤器过滤器,传递它的接口在创建新的HttpClient对象时传递给HttpClient(IHttpFilter)构造函数。要设置过滤器链,请将新过滤器链接到前一个过滤器和末尾的HttpBaseProtocolFilter对象。以下示例代码显示了如何使用自定义筛选器创建HttpClient对象。internalstaticvoidCreateHttpClient(refHttpClienthttpClient){if(httpClient!=null){httpClient.Dispose();}//ExtendHttpClientbychainingmultiplefilterstogether//andthenprovidingHttpClientwiththeconfiguredfilterpipeline.varbasefilter=newHttpBaseProtocolFilter();//Addsacustomheadertoeveryrequestandresponsemessage.varmyfilter=newPlugInFilter(basefilter);httpClient=newHttpClient(myfilter);}后台传输更新Windows.Networking.BackgroundTransfer的更新在Windows8.1Preview中引入,进一步简化了开发人员下载和上传文件的过程,增强了最终用户体验。新的BackgroundTransferGroup类简化了您的应用程序创建这些组以及以并行、串行或基于优先级的方式完成下载和上传的过程。例如,当用户决定下载和观看直播电视剧的一集时,您的应用现在可以优先下载该系列中最早的一集,或者让用户选择先下载哪一集。您的应用现在可以更新其动态磁贴或使用toast通知向用户提供状态信息。您可以使用BackgroundDownloader和BackgroundUploader类中的新方法配置这些通知。后台传输功能现在可以自动将下载切换到无限制网络(例如,无限制网络),如果下载中断后可以继续并且可能持续超过两分钟。连接待机场景的实时通信支持后台网络现在允许Windows锁定屏幕上的应用程序接收网络数据包,即使应用程序不再运行,因为设备处于连接待机等低功耗状态。更新包括:对新Windows.Web.HttpAPI的实时通信支持。支持请勿打扰时间,这是Windows8.1预览版中的一项新功能。IP语音(VoIP)应用程序的新通知功能允许这些应用程序即使在屏幕锁定时也能接听电话。四个硬件插槽支持大多数网络设备上的连接待机。ConnectedStandby更新ConnectedStandby是Windows设备的一种特殊电源状态。它允许应用程序在设备屏幕关闭且设备处于待机(低功耗)状态时执行有限的连接任务。仅当设备的网络适配器支持时,实时通信和后台网络才使用连接待机功能。这些连接待机更新是在Windows8.1预览版中引入的,因此您的应用可以提供在设备的整个生命周期内响应迅速的连接体验。支持以太网和移动宽带网络适配器支持更多的网络适配器硬件插槽(更多插槽意味着锁定屏幕上可以使用连接待机的更多应用程序)Windows8.1Preview中引入的地理围栏支持“地理围栏”支持。地理围栏允许应用程序在感兴趣的地理位置周围定义一系列点,并在运行应用程序的设备进入或退出该区域时让系统提醒应用程序。通过对WindowsGeography的这次更新,您的应用程序可以在朋友在附近时通知用户,向下班或下班的用户发送提醒,或者在用户在某些商店附近时显示优惠券。使用Windows8.1Preview中的地理围栏功能,您可以执行以下操作:创建或删除一个或多个“地理围栏”或感兴趣区域设置通知,以便在您进入或离开地理围栏时收到通知。允许您的地理围栏应用程序在后台运行,并通过使用新的后台任务LocationTrigger类继续获取地理围栏事件。允许您的应用程序在锁定屏幕上接收地理围栏更新。Windows.Devices.Geolocation.Geofencing命名空间包含使用地理围栏功能所需的类。基本上,您可以创建一个或多个定义感兴趣区域和通知条件的地理围栏对象。然后,您的应用程序必须处理当设备进入或离开定义区域之一时发生的事件。您可以稍后通过使用模拟器来模拟设备进入和退出地理围栏时的移动来测试您的应用程序。Wi-FiDirect支持您可以使用新的WiFiDirectDevice类来枚举无线范围内的WiFiDirect设备列表。这些设备可以使用用户设置的“设备”部分中的“添加设备”功能与您的PC相关联。然后,您的应用程序可以创建到范围内任何Wi-FiDirect设备的网络套接字连接。Wi-FiDirect是一种高带宽传输,使用与Wi-Fi相同的范围。如果能使用多媒体共享或高性能联网游戏,那将是一种非常出色的享受。有关详细信息,请参阅Windows运行时API中的Windows.Devices.WifiDirect命名空间。注意您必须在应用程序清单文件中启用接近感应才能使用Wi-FiDirectAPI。