十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
在我的这些年的开发中,我可以肯定的一点是,保护网络请求是任何移动应用程序的基本组成部分。几周前我的一个应用程序停止工作,因为我改变了在mettup.com的服务器上的安全套接字层(SSL)认证,这使我认识到传输层安全(TLS)在确保应用程序和服务器请求中起着重要的作用。
我在我的播客合并冲突中更详细地讨论TLS,但简而言之,TLS提供了对称加密技术,可以防止中间人***,也可以防止移动设备的任何通信隐私。Meetup更新了他们的认证服务器要求在使用制作请求时最少要TLS1.2版本,因此我很清楚的更新了我的应用程序并启用TLS1.2以支持我的Xamarin.iOS和Xamarin.Android应用,仅改变了一些构建配置。
当涉及到网络请求和TLS时,有两个重要的设置我们可以修改:
HttpClient: 处理HttpMessageHandler实现以提供消息处理或者提供底层的本机实现。
TLS/SSL: 处理应用程序使用的TLS的实现。
我们可以选择的每个实现都提供了不同的功能、速度和兼容性,同时提供了一个标准的网络请求调用,并在幕后透明地表现。
选择HttpClient 和TLS实现的设置,通过右键点击项目可以发现,通过在Windows版Visual Studio中,Properties > Android Options > Advanced或者在Xamarin Studio中Options > Build > Android Build > General 。
在Android上HttpClient 实现我们通过在使用new HttpClient()默认控制,
受控的 HttpClientHandler是 HttpClient 处理完全管理的实现, 几年来它都是Xamarin.Android的默认实现。而在功能方面最兼容的时候,折衷是一个稍大的可执行文件大小,并且执行速度可能比本机实现慢。此实现仅与过去的TLS 1/1.1兼容, 但是,在TLS / SSL实现中有一个新的选项来使用本地TLS 1.2 +,它将在所有的调用下使用谷歌下一个令人讨厌的SSL。
本地的 AndroidClientHandler 选项使用本地的java.net.URLConnection来处理所有的HTTP请求,改进的性能和更小的可执行文件的大小。 AndroidClientHandler 警告虽然它将在所有版本的Android上运行,它只会在Android 5 +设备提供支持TLS 1.2和几个HttpClient功能可能不可用。
或者,你可以混合和匹配使用托管和一个电话呼叫的基础上人HttpClient Handler。简单地传递一个 AndroidClientHandler 实例,在创建HttpClient时:
点击(此处)折叠或打开
using System.Net.Http;
...
// This will use the default message handler for the application; as
// set in the Project Options for the project.
var client = new HttpClient();
// Use AndroidClientHandler for all calls from this HttpClient
var client = new HttpClient(new Xamarin.Android.Net.AndroidClientHandler ());
确保这一点很重要,在SSL/TLS实现框中选择 Native TLS 1.2+ ,如果你的应用要求TLS 1.2+。Android的应用程序需要运行的版本将决定我们是否应该选择托管或本机HttpClient实现。对于Meetup网站经理,我选择了HttpClientHandler和本地托管TLS 1.2 +所以我可以支持TLS 1.2 +在所有我的电话,无论安卓版。
iOS 和macOS 在处理程序和TLS支持时更简化。所有来自于Xamarin.iOS 10.8的iOS应用都使用苹果的TLS使用本地执行的,它为所有应用程序提供完整的TLS 1.2 +支持。还有几个选项,开发者可以选择当谈到HttpClient实现,通过在Visual Studio中右击工程并选择 Properties > iOS Build > Advanced 或者在Xamarin Studio选择 Options > Build > iOS Build来找到。
有三种不同的HttpClient的处理程序,可以选择iOS应用。默认管理HttpClientHandler提供HttpClient功能大的兼容性。然而,像管理Android HttpClient处理程序,它还需要更多的托管代码,可以增加应用程序的大小。另外两个选项,CFNetwork Handler(iOS 6 +)和NSURLSession Handler(iOS 7 +),包装器是否围绕各自的原生api,提供用于网络通信和传输的底层本机代码。使用这些将导致更小的可执行文件,提高网络性能,并使用底层的IOS队列和线程。缺点是,有可能不是所有的全功能的.net HttpClient的功能和选项。
就像 Xamarin.Android我们可以选择我们的应用程序使用HttpMessageHandler务实:
点击(此处)折叠或打开
using System.Net.Http;
...
// This will use the default message handler for the application; as
// set in the Project Options for the project.
var client = new HttpClient();
// This will create an HttpClient that explicitly uses the CFNetworkHandler
var client = new HttpClient(new CFNetworkHandler());
// This will create an HttpClient that explicitly uses NSUrlSessionHandler
var client = new HttpClient(new NSUrlSessionHandler());
更新TLS 和HttpClient 实现,将使我们的应用程序能够完全安全,并兼容我们应用程序必须与之交互的任何后端。
一定要看我们的更新,跨平台 传输层安全 文档, 对于一个完整的,所有的TLS选项Xamarin开发进行了深入的分析,其中包括额外的切换和指导。你也可以查看特定平台的文档,为 Android 和 iOS / macOS 分别颁发的。还有,一定要听我的考验和磨难,在 Merge Conflict 37: TLS – How do you EVEN上。最后,学习更多Xamarin大学的 自学课程 “Consuming REST-based Web Services”, 它研究了如何在移动应用程序中集成和使用REST式Web服务。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。