2013-07-07 7 views
0

Мне нужно запросить веб-службы через конечную точку переднего плана. Я использую базовую аутентификацию. он отлично работает, если я использую этот код:Аутентификация с помощью SoapHttpClientProtocol

Uri uri = new Uri("https://ged.legrandnarbonne.com/_vti_bin/webs.asmx"); 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); 

     System.Net.CredentialCache credentialCache = new System.Net.CredentialCache(); 
     credentialCache.Add(
      new System.Uri("https://xxx.com"), 
      "Basic", 
      new System.Net.NetworkCredential("xxx", "xxxx") 
     ); 
     string postData = @"<?xml version='1.0' encoding='utf-8'?><soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'><soap:Body><GetWeb xmlns='http://schemas.microsoft.com/sharepoint/soap/'><webUrl>https://ged.legrandnarbonne.com</webUrl></GetWeb></soap:Body></soap:Envelope>"; 
     byte[] byteArray = Encoding.UTF8.GetBytes (postData); 
     request.ContentType = "text/xml; charset=utf-8"; 

     request.Credentials=credentialCache; 
     request.Method = "POST"; 
     request.ContentLength=byteArray.Length; 
     Stream dataStream = request.GetRequestStream(); 
     dataStream.Write (byteArray, 0, byteArray.Length); 
     dataStream.Close(); 

     WebResponse v = request.GetResponse(); 
     Stream rStream = v.GetResponseStream(); 
     StreamReader str = new StreamReader(rStream); 
     if (str.EndOfStream != true) 
     { 
      Console.WriteLine(str.ReadToEnd()); 
     } 
     v.Close(); 
     rStream.Close(); 
     str.Close(); 

У меня есть ответ 401, и тогда аутентификация отправляется, и я получил ответ.

Если я использую SoapHttpClientProtocol, у меня есть ответ 302, и я не понимаю, как это сделать. Не могли бы вы помочь мне.

ответ

0

После долгого расследования это похоже на перенаправление из-за заголовка useragent. если установлено TMG, отправьте запрос 302 на страницу входа в систему. Если он оставлен пустым, он работает отлично. Надеюсь, это может помочь кому-то.

Смежные вопросы