1
我試圖從MonoTouch的在這個片段中調用EWS喜歡的工作:爲什麼我不能讓HttpWebRequest的使用NTLM身份驗證
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();
有一個在最後一行拋出的異常:401:未經授權。
HttpWebRequest是不是應該透明地處理協商,即處理挑戰並生成第二個和第三個請求?
P.S.結果與http和https相同
P.P.S.使用EWS託管API,我已經從模擬器成功的EWS調用(但不幸的是,它不能爲實際設備構建)。在Exchange服務器上使用網絡嗅探器證明在單個託管調用中有三個HTTP請求,並且只有一個來自上面的代碼。
是的,將「Negotiate」更改爲「NTLM」。 Merci bien,Poupou! – Nina