コード例 #1
0
        public static string CallSoapService(SoapServiceRequest request, ICredentials credentials = null)
        {
            var xmlDataBuilder = new StringBuilder(@"<?xml version=""1.0"" encoding=""utf-8""?>");

            xmlDataBuilder.Append(@"<soap:Envelope xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/""");
            xmlDataBuilder.Append(@" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">");
            xmlDataBuilder.AppendFormat("<soap:Body>{0}</soap:Body>", request.data);
            xmlDataBuilder.Append("</soap:Envelope>");

            using (var webClient = new WebClient())
            {
                SetCredentials(request, credentials, webClient);

                webClient.Headers.Add("content-type", "text/xml; charset=\"utf-8\"");
                webClient.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 2.0.50727.8009)");

                if (request.overrideAction && !String.IsNullOrWhiteSpace(request.soapServiceAction))
                {
                    webClient.Headers.Add("SOAPAction", request.soapServiceAction);
                }

                return(webClient.UploadStringDetectEncoding(request.url, xmlDataBuilder.ToString()));

                // 2015/06/12 -- Removed approach using Webrequest.
            }
        }
コード例 #2
0
 private static void SetCredentials(SoapServiceRequest request, ICredentials credentials, WebClient webClient)
 {
     if (credentials != null)
     {
         if (request.useCookie)
         {
             var spCredential = credentials as SharePointOnlineCredentials;
             if (spCredential != null)
             {
                 var cookie = spCredential.GetAuthenticationCookie(new Uri(request.url));
                 webClient.Headers.Add("cookie", cookie);
             }
             else
             {
                 webClient.Credentials = credentials;
             }
         }
         else
         {
             webClient.Credentials = credentials;
         }
     }
 }