Я пытаюсь вызвать EWS из MonoTouch, как в следующем фрагменте:
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должен прозрачно обрабатывать переговоры, т. е. обрабатывать вызов и генерировать второй и третий запрос?
PS Результаты одинаковы как для http, так и для https
PPS. Использование управляемого API EWSсделал успешные вызовы EWS с симулятора (но, к сожалению, он не предназначен для реального устройства).Использование сетевого анализатора на сервере Exchange доказало, что в одном управляемом вызове три HTTP-запроса и только один из приведенного выше кода.