小编Nin*_*ina的帖子

为什么我不能使 HttpWebRequest 与 NTLM 身份验证一起使用

我正在尝试从 MonoTouch 调用 EWS,就像在这个片段中一样:

byte[] bytes = Encoding.UTF8.GetBytes("... some xml here ...");
HttpWebRequest req = WebRequest.Create("https://owa.site.com/ews/exchange.asmx") as HttpWebRequest;
req.Method = "POST";
req.KeepAlive = true;
req.ContentType = "text/xml";
req.ContentLength = bytes.Length;
req.AuthenticationLevel = AuthenticationLevel.MutualAuthRequested;
CredentialCache ch = new CredentialCache();
ch.Add(req.RequestUri, "Negotiate", new NetworkCredential("uname", "pwd", "domain"));
req.Credentials = ch;
Stream sreq = req.GetRequestStream();
sreq.Write(bytes, 0, bytes.Length);
sreq.Close();
WebResponse resp = req.GetResponse();
Run Code Online (Sandbox Code Playgroud)

最后一行抛出异常:401:未授权。

HttpWebRequest 不是应该透明地处理协商,即处理挑战并生成第二个和第三个请求吗?

PS http和https的结果是一样的

PPS 使用 EWS 托管 API,我从模拟器成功调用了 EWS(但不幸的是,它不是为实际设备构建的)。在 Exchange 服务器上使用网络嗅探器证明在一次托管调用中有三个 HTTP 请求,并且只有一个来自上面的代码。

ntlm exchangewebservices xamarin.ios ios

1
推荐指数
1
解决办法
1312
查看次数

标签 统计

exchangewebservices ×1

ios ×1

ntlm ×1

xamarin.ios ×1