设为首页 加入收藏

TOP

揭秘Windows10 UWP中的httpclient接口[2](三)
2017-10-11 16:06:56 】 浏览:5421
Tags:揭秘 Windows10 UWP httpclient 接口
个资源请求,会提供一个UI对话框,它要求用户进行确认。如想禁用这个UI对话框,设置HttpBaseProtocolFilter的属性AllowUI为false。 使用指定的验证替代:

var myFilter = new HttpBaseProtocolFilter(); 
myFilter.ServerCredential = new PasswordCredential(“fooBar”, myUsername, myPassword);

说明

  • 在上面的例子中,myUsername和myPassword是一个string字符串变量,通常是从用户UI输入或app配置设置中获得。

  • 在UWP应用中,HttpClientHandler.Credentials能被设置为NULL,DefaultCredentials,类型NetworkCredential等值。

使用客户端证书

System.Net.Http:

为了保护用户凭据信息,默认情况下API不会发送任何客户端凭据到服务器上。 使用客户端凭据认证代码如下:

var myClientHandler = new HttpClientHandler(); 
myClientHandler.ClientCertificateOptions = ClientCertificateOption.Automatic;

Windows.Web.Http:

使用客户端凭据认证有两个选项,默认是提供UI给用户选择一个证书信息。作为一种选择,你可以用程序设置一个客户端证书,如下:

var myFilter = new HttpBaseProtocolFilter(); 
myFilter.ClientCertificate = myCertificate;

说明:

  1. 为在二者API中任意一个使用客户端证书,你必须添加它到app的证书商店里,参考连接的这些构造。在“My”中企业APP也能使用已经存在的客户端证书。

  2. 对于HttpClientHandler.ClientCertificateOptions来说,这有两个值可以设置:Automatic和Manual。设置Automatic会从APP证书商店里选择一个最匹配的客户端证书,用它来认证。设置Manual会确保不会发送客户端证书,即使服务器请求它。

代理设置

对与二者APis来说,代理设置会自动从IE/Edge浏览器中获得,它被所有的Http请求默认调用。这确保了,即使用户通过一个代理上网,也能自动连接工作。 二者API都不能再APP中提供一种方式去指定一个自定义的代理。不论如何,你可以选择设置HttpClientHandler.UseProxy(System.Net.Http中)为false不使用默认代理设置,在Windows.Web.Http设置HttpBaseProtocolFilter.UseProxy为false。

cookie处理

默认情况下,二者APIs都保存通过服务器发送的cookies,在相同的app容器内,自动添加上Cookies到那个URL的后续请求上。 这些Cookies被那个明确的URL读取, 添加新的自定义cookies。 二者APIs都有一个选项能禁止发送cookies到服务器上:在System.Net.Http上设置HttpClientHandler.UseCookies为false,在Windows.Web.Http设置HttpBaseProtocolFilter.CookieUsageBehavior为HttpCookieUsageBehavior.NoCookies。

System.Net.Http:

在client处理器上,添加一个cookie到所有的请求上:

// 手工添加一个cookie 
myClientHandler.CookieContainer.Add(resourceUri, myCookie);

添加一个cookie到单个请求上:

HttpRequestMessage myRequest = new HttpRequestMessage(); 
myRequest.Headers.Add("Cookie", "user=foo; key=bar");

检查一个指定URI的所有Cookies: 

var cookieCollection = myClientHandler.CookieContainer.GetCookies(resourceUri);

Windows.Web.Http:

通过client,添加一个cookie到所有的发送请求上:

// 手工添加一个cookie 
filter.CookieManager.SetCookie(myCookie);

添加一个cookie到单个请求上,这个模式使用和上面的Windows.Web.Http API上是相同的。

管理cookies:

// 从一个指定URI上获取所有的cookies。
 var cookieCollection = filter.CookieManager.GetCookies(resourceUri);
// 删除一个cookie。
 filter.CookieManager.DeleteCookie(myCookie);

补充:

Windows.Web.Http API中,对于这几个APIs来说,cookie管理器中的这些cookies都是共享的,因为它们都是在WinINet栈上实现的,比如:Windows.Web.Syndication, Windows.Web.AtomPub, XHR和其他的。因此无论使用哪个api,都能通过服务器对请求的响应中获得cookie, 也可能会添加cookie到一个后续的HttpClient请求中,到同样的服务器中。 

每台服务器的最大连接数

在操作系统的HTTP协议栈下,对每台服务器默认连接数是6。System.Net.Http HttpClient API不能提供一个方式去控制它,但在Windows.Web.Http API下是可以的,使用:

var myFilter = new HttpBaseProtocolFilter();
 myFilter.MaxConnectionsPerServer = 15;

最新更新

在windows10 UWP apps中,二者APIs都添加了对HTTP/2的默认支持。作为一个开发者,可以很好的利用这些优势,比如不需要代码变动就能降低延迟。 二者APIs(System.Net.Http和Windows.Web.Http)也允许明确禁止这项特性和强制使用HTTP 1.1或1.0.

从目前开始,我尝试继续添加一些高级请求特性,比如自定义服务器ssl证书的生效,在所有的地方都能添加处理器/过滤器到HttpClient对象上。为了在windows上写出优秀的apps,我们很期待听到你需要在这些API上增加新特性。 你也可以在UserVoice提出想法。也可以加入 Windows Insiders program ,通过论坛或Windows Feedback app提交反馈。

这篇博客是微软网络APIs团队成员Sidharth Nabar写的。

译自 http:/

首页 上一页 1 2 3 4 下一页 尾页 3/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇07.移动先行之谁主沉浮----控件之.. 下一篇Win10 FaceAPI小demo开发问题汇总

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目