)>}]
شركة التطبيقات المتكاملة لتصميم وبرمجة البرمجيات الخاصة ش.ش.و.
Integrated Applications Programming Company
Home » Code Library » Sdc (Ia.Ftn.Cl.Models.Client.Nokia)

Public general use code classes and xml files that we've compiled and used over the years:

Fixed Telecommunications Network's Operations Support System Management Intranet (FTN OSS) client support class for Nokia's Fixed Telecommunications Network (FTN) client model.

    1: using System;
    2: using System.Collections.Generic;
    3: using System.Globalization;
    4: using System.IO;
    5: using System.Net;
    6: using System.Xml;
    7:  
    8: namespace Ia.Ftn.Cl.Models.Client.Nokia
    9: {
   10:     ////////////////////////////////////////////////////////////////////////////
   11:  
   12:     /// <summary publish="true">
   13:     /// Fixed Telecommunications Network's Operations Support System Management Intranet (FTN OSS) client support class for Nokia's Fixed Telecommunications Network (FTN) client model.
   14:     /// </summary>
   15:     /// 
   16:     /// <remarks> 
   17:     /// Copyright © 2018-2022 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
   18:     /// </remarks> 
   19:     public class Sdc
   20:     {
   21:         ////////////////////////////////////////////////////////////////////////////
   22:  
   23:         /// <summary>
   24:         ///
   25:         /// </summary>
   26:         public enum ResultCode
   27:         {
   28:             Successful = 0, // added by me
   29:             Failure = 100001, // added by me
   30:             DocumentElementIsNull = 100002, // added by me
   31:         }
   32:  
   33:         ////////////////////////////////////////////////////////////////////////////
   34:  
   35:         /// <summary>
   36:         ///
   37:         /// </summary>
   38:         public Sdc()
   39:         {
   40:             // below: trust all certificates
   41:             // below: see http://stackoverflow.com/questions/2859790/the-request-was-aborted-could-not-create-ssl-tls-secure-channel
   42:  
   43:             System.Net.ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) => true);
   44:             //ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
   45:  
   46:             System.Net.ServicePointManager.Expect100Continue = true;
   47:             //System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
   48:             //System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
   49:             System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
   50:         }
   51:  
   52:         ////////////////////////////////////////////////////////////////////////////
   53:  
   54:         /// <summary>
   55:         ///
   56:         /// </summary>
   57:         public void EnablePerformanceMonitoringDataOverPon(Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Pon pon, out Ia.Ftn.Cl.Models.Business.Nokia.Sdc.Response response)
   58:         {
   59:             string endPoint;
   60:             XmlDocument soapEnvelopeXml, soapResponseEnvelopeXmlDocument;
   61:  
   62:             endPoint = "PerformanceManagementControlExtns";
   63:  
   64:             soapEnvelopeXml = EnablePerformanceMonitoringDataOverPonSoapEnvelopeXml(pon, endPoint);
   65:  
   66:             SendSoapRequestAndReadResponse(endPoint, soapEnvelopeXml, out soapResponseEnvelopeXmlDocument);
   67:  
   68:             response = ParseSoapResponseXml(soapResponseEnvelopeXmlDocument);
   69:         }
   70:  
   71:         ////////////////////////////////////////////////////////////////////////////
   72:  
   73:         /// <summary>
   74:         ///
   75:         /// </summary>
   76:         public void DisablePerformanceMonitoringDataOverPon(Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Pon pon, out Ia.Ftn.Cl.Models.Business.Nokia.Sdc.Response response)
   77:         {
   78:             string endPoint;
   79:             XmlDocument soapEnvelopeXml, soapResponseEnvelopeXmlDocument;
   80:  
   81:             endPoint = "PerformanceManagementControlExtns";
   82:  
   83:             soapEnvelopeXml = DisablePerformanceMonitoringDataOverPonSoapEnvelopeXml(pon, endPoint);
   84:  
   85:             SendSoapRequestAndReadResponse(endPoint, soapEnvelopeXml, out soapResponseEnvelopeXmlDocument);
   86:  
   87:             response = ParseSoapResponseXml(soapResponseEnvelopeXmlDocument);
   88:         }
   89:  
   90:         ////////////////////////////////////////////////////////////////////////////
   91:  
   92:         /// <summary>
   93:         ///
   94:         /// </summary>
   95:         public Ia.Ftn.Cl.Models.Business.Nokia.Sdc.Response GetPerformanceMonitoringDataOverPon(Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Pon pon)
   96:         {
   97:             string endPoint;
   98:             XmlDocument soapEnvelopeXml, soapResponseEnvelopeXmlDocument;
   99:  
  100:             endPoint = "PerformanceManagementRetrievalExtns";
  101:  
  102:             soapEnvelopeXml = GetPerformanceMonitoringDataOverPonSoapEnvelopeXml(pon, endPoint);
  103:  
  104:             SendSoapRequestAndReadResponse(endPoint, soapEnvelopeXml, out soapResponseEnvelopeXmlDocument);
  105:  
  106:             var response = ParseSoapResponseXml(soapResponseEnvelopeXmlDocument);
  107:  
  108:             return response;
  109:         }
  110:  
  111:         ////////////////////////////////////////////////////////////////////////////
  112:         ////////////////////////////////////////////////////////////////////////////
  113:  
  114:  
  115:  
  116:  
  117:  
  118:  
  119:  
  120:  
  121:         ////////////////////////////////////////////////////////////////////////////
  122:         ////////////////////////////////////////////////////////////////////////////
  123:  
  124:         /// <summary>
  125:         ///
  126:         /// </summary>
  127:         private static XmlDocument EnablePerformanceMonitoringDataOverPonSoapEnvelopeXml(Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Pon pon, string endPoint)
  128:         {
  129:             string version, author, soapEnvelopeBodyXml;
  130:             XmlDocument soapEnvelopeXml;
  131:  
  132:             version = Ia.Cl.Models.Default.RandomNumber(12);
  133:             author = Ia.Cl.Models.Default.RandomNumber(12);
  134:  
  135:             soapEnvelopeBodyXml = @"
  136: <sdc:EnablePerformanceMonitoringDataRequest>
  137:  
  138:     <sdc:pmObjectSelect>
  139:         <tmf:mdNm>AMS</tmf:mdNm>
  140:         <tmf:meNm>" + pon.PonGroup.Olt.AmsName + @"</tmf:meNm>
  141:         <tmf:propNm>/type=PON Port/" + pon.RxSxLtxPonx + @"</tmf:propNm>
  142:     </sdc:pmObjectSelect>
  143:  
  144:     <sdc:pmParameterList>
  145:         <sdc:pmParameter>
  146:             <sdc:pmParameterName>gponOltSidePonUtilTxPmCurrentIntervalTotalBytes</sdc:pmParameterName>
  147:         </sdc:pmParameter>
  148:     </sdc:pmParameterList>
  149:  
  150: </sdc:EnablePerformanceMonitoringDataRequest>";
  151:  
  152:             soapEnvelopeXml = SoapEnvelopeXml(endPoint, version, author, soapEnvelopeBodyXml);
  153:  
  154:             return soapEnvelopeXml;
  155:         }
  156:  
  157:         ////////////////////////////////////////////////////////////////////////////
  158:  
  159:         /// <summary>
  160:         ///
  161:         /// </summary>
  162:         private static XmlDocument DisablePerformanceMonitoringDataOverPonSoapEnvelopeXml(Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Pon pon, string endPoint)
  163:         {
  164:             string version, author, soapEnvelopeBodyXml;
  165:             XmlDocument soapEnvelopeXml;
  166:  
  167:             version = Ia.Cl.Models.Default.RandomNumber(12);
  168:             author = Ia.Cl.Models.Default.RandomNumber(12);
  169:  
  170:             soapEnvelopeBodyXml = @"
  171: <sdc:DisablePerformanceMonitoringDataRequest>
  172:  
  173:     <sdc:pmObjectSelect>
  174:         <tmf:mdNm>AMS</tmf:mdNm>
  175:         <tmf:meNm>" + pon.PonGroup.Olt.AmsName + @"</tmf:meNm>
  176:         <tmf:propNm>/type=PON Port/" + pon.RxSxLtxPonx + @"</tmf:propNm>
  177:     </sdc:pmObjectSelect>
  178:  
  179:     <sdc:pmParameterList>
  180:         <sdc:pmParameter>
  181:             <sdc:pmParameterName>gponOltSidePonUtilTxPmCurrentIntervalTotalBytes</sdc:pmParameterName>
  182:         </sdc:pmParameter>
  183:     </sdc:pmParameterList>
  184:  
  185: </sdc:DisablePerformanceMonitoringDataRequest>";
  186:  
  187:             soapEnvelopeXml = SoapEnvelopeXml(endPoint, version, author, soapEnvelopeBodyXml);
  188:  
  189:             return soapEnvelopeXml;
  190:         }
  191:  
  192:         ////////////////////////////////////////////////////////////////////////////
  193:  
  194:         /// <summary>
  195:         ///
  196:         /// </summary>
  197:         [Obsolete]
  198:         private static XmlDocument OldGetPerformanceMonitoringDataOverPonSoapEnvelopeXml(Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Pon pon, string endPoint)
  199:         {
  200:             string version, author, soapEnvelopeBodyXml;
  201:             XmlDocument soapEnvelopeXml;
  202:  
  203:             version = Ia.Cl.Models.Default.RandomNumber(12);
  204:             author = Ia.Cl.Models.Default.RandomNumber(12);
  205:  
  206:             soapEnvelopeBodyXml = @"
  207: <sdc:GetPerformanceMonitoringDataRequest>
  208:  
  209:     <sdc:pmObjectSelect>
  210:         <tmf:mdNm>AMS</tmf:mdNm>
  211:         <tmf:meNm>" + pon.PonGroup.Olt.AmsName + @"</tmf:meNm>
  212:         <tmf:propNm>/type=PON Port/" + pon.RxSxLtxPonx + @"</tmf:propNm>
  213:     </sdc:pmObjectSelect>
  214:  
  215:     <sdc:pmParameterList>
  216:         <sdc:pmParameter>
  217:             <sdc:pmParameterName>gponOltSidePonUtilTxPmCurrentIntervalTotalBytes</sdc:pmParameterName>
  218:         </sdc:pmParameter>
  219:     </sdc:pmParameterList>
  220:  
  221: </sdc:GetPerformanceMonitoringDataRequest>";
  222:  
  223:             soapEnvelopeXml = SoapEnvelopeXml(endPoint, version, author, soapEnvelopeBodyXml);
  224:  
  225:             return soapEnvelopeXml;
  226:         }
  227:  
  228:         ////////////////////////////////////////////////////////////////////////////
  229:  
  230:         /// <summary>
  231:         ///
  232:         /// </summary>
  233:         private static XmlDocument GetPerformanceMonitoringDataOverPonSoapEnvelopeXml(Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Pon pon, string endPoint)
  234:         {
  235:             string version, author, soapEnvelopeBodyXml;
  236:             XmlDocument soapEnvelopeXml;
  237:  
  238:             version = Ia.Cl.Models.Default.RandomNumber(12);
  239:             author = Ia.Cl.Models.Default.RandomNumber(12);
  240:  
  241:             soapEnvelopeBodyXml = @"
  242: <sdc:GetPerformanceMonitoringDataRequest>
  243:     <sdc:pmObjectSelect>
  244:         <tmf:mdNm>AMS</tmf:mdNm>
  245:         <tmf:meNm>" + pon.PonGroup.Olt.AmsName + @"</tmf:meNm>
  246:         <tmf:propNm>/type=PON Port/" + pon.RxSxLtxPonx + @"</tmf:propNm>
  247:     </sdc:pmObjectSelect>
  248:  
  249:     <sdc:pmParameterList>
  250:         <sdc:pmParameter>
  251:             <sdc:pmParameterName>gponOltSidePonUtilTxPmIntervalTotalBytes</sdc:pmParameterName>
  252:             <sdc:pmParemeterMaxIntervals>12</sdc:pmParemeterMaxIntervals>
  253:         </sdc:pmParameter>
  254:  
  255:         <sdc:pmParameter>
  256:             <sdc:pmParameterName>gponOltSidePonUtilRxPmIntervalTotalBytes</sdc:pmParameterName>
  257:             <sdc:pmParemeterMaxIntervals>12</sdc:pmParemeterMaxIntervals>
  258:          </sdc:pmParameter>
  259:     </sdc:pmParameterList>
  260:  
  261: </sdc:GetPerformanceMonitoringDataRequest>";
  262:  
  263:             soapEnvelopeXml = SoapEnvelopeXml(endPoint, version, author, soapEnvelopeBodyXml);
  264:  
  265:             return soapEnvelopeXml;
  266:         }
  267:  
  268:         ////////////////////////////////////////////////////////////////////////////
  269:         ////////////////////////////////////////////////////////////////////////////
  270:  
  271:  
  272:  
  273:  
  274:  
  275:  
  276:         ////////////////////////////////////////////////////////////////////////////
  277:         ////////////////////////////////////////////////////////////////////////////
  278:  
  279:         /// <summary>
  280:         ///
  281:         /// </summary>
  282:         [Obsolete]
  283:         private static XmlDocument OldSoapEnvelopeXml(string endPoint, string version, string author, string soapEnvelopeBodyXml)
  284:         {
  285:             string s, activityName, destinationUri;
  286:             XmlDocument soapEnvelopeXml = new XmlDocument();
  287:  
  288:             activityName = "activityName";
  289:             destinationUri = Ia.Ftn.Cl.Models.Business.Nokia.Sdc.BaseAddress + "/" + Ia.Ftn.Cl.Models.Business.Nokia.Sdc.ServiceUrl + "/" + endPoint + "/" + activityName;
  290:  
  291:             s = @"<?xml version=""1.0"" encoding=""UTF-8""?>
  292: <soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:tmf=""tmf854.v1"" xmlns:sdc=""sdcNbi"">
  293:    <soapenv:Header>
  294:       <tmf:header extVersion=""" + version + @""" extAuthor=""" + author + @""" tmf854Version=""tmf854.v1"">
  295:          <tmf:activityName>" + activityName + @"</tmf:activityName>
  296:          <tmf:msgName>" + activityName + @"</tmf:msgName>
  297:          <tmf:msgType>REQUEST</tmf:msgType>
  298:          <tmf:senderURI>http://ftn:8080</tmf:senderURI>
  299:          <tmf:destinationURI>" + destinationUri + @"</tmf:destinationURI>
  300:          <tmf:communicationPattern>SimpleResponse</tmf:communicationPattern>
  301:          <tmf:communicationStyle>RPC</tmf:communicationStyle>
  302:       </tmf:header>
  303:    </soapenv:Header>
  304:    <soapenv:Body>" + soapEnvelopeBodyXml + @"</soapenv:Body>
  305: </soapenv:Envelope>";
  306:  
  307:             soapEnvelopeXml.LoadXml(s);
  308:  
  309:             return soapEnvelopeXml;
  310:         }
  311:  
  312:         ////////////////////////////////////////////////////////////////////////////
  313:  
  314:         /// <summary>
  315:         ///
  316:         /// </summary>
  317:         private static XmlDocument SoapEnvelopeXml(string endPoint, string version, string author, string soapEnvelopeBodyXml)
  318:         {
  319:             string s, activityName, destinationUri;
  320:             XmlDocument soapEnvelopeXml = new XmlDocument();
  321:  
  322:             activityName = "activityName";
  323:             destinationUri = Ia.Ftn.Cl.Models.Business.Nokia.Sdc.BaseAddress + "/" + Ia.Ftn.Cl.Models.Business.Nokia.Sdc.ServiceUrl + "/" + endPoint + "/" + activityName;
  324:  
  325:             s = @"<?xml version=""1.0"" encoding=""UTF-8""?>
  326: <soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:tmf=""tmf854.v1"" xmlns:sdc=""sdcNbi"">
  327:    <soapenv:Header>
  328:       <tmf:header extVersion=""" + version + @""" extAuthor=""" + author + @""" tmf854Version=""tmf854.v1"">
  329:          <tmf:msgName>GetPerformanceMonitoringDataRequest</tmf:msgName>
  330:          <tmf:msgType>REQUEST</tmf:msgType>
  331:          <tmf:communicationPattern>SimpleResponse</tmf:communicationPattern>
  332:          <tmf:communicationStyle>RPC</tmf:communicationStyle>
  333:       </tmf:header>
  334:    </soapenv:Header>
  335:    <soapenv:Body>" + soapEnvelopeBodyXml + @"</soapenv:Body>
  336: </soapenv:Envelope>";
  337:  
  338:             soapEnvelopeXml.LoadXml(s);
  339:  
  340:             return soapEnvelopeXml;
  341:         }
  342:  
  343:         ////////////////////////////////////////////////////////////////////////////
  344:  
  345:         /// <summary>
  346:         ///
  347:         /// </summary>
  348:         private void SendSoapRequestAndReadResponse(string endPoint, XmlDocument soapEnvelopeXml, out XmlDocument soapResultXmlDocument)
  349:         {
  350:             string url;
  351:             string soapResult;
  352:             HttpWebRequest request;
  353:  
  354:             soapResultXmlDocument = new XmlDocument();
  355:  
  356:             url = Ia.Ftn.Cl.Models.Business.Nokia.Sdc.BaseAddress + "/" + Ia.Ftn.Cl.Models.Business.Nokia.Sdc.ServiceUrl + "/" + endPoint;
  357:  
  358:             request = CreateWebRequest(url, endPoint);
  359:  
  360:             byte[] bytes;
  361:             bytes = System.Text.Encoding.ASCII.GetBytes(soapEnvelopeXml.OuterXml);
  362:             request.ContentType = "text/xml; encoding='utf-8'";
  363:             request.ContentLength = bytes.Length;
  364:             request.Method = "POST"; // "GET";
  365:  
  366:             request.Credentials = new NetworkCredential(Ia.Ftn.Cl.Models.Business.Nokia.Sdc.UserName, Ia.Ftn.Cl.Models.Business.Nokia.Sdc.Password);
  367:  
  368:             try
  369:             {
  370:                 using (Stream stream = request.GetRequestStream())
  371:                 {
  372:                     stream.Write(bytes, 0, bytes.Length);
  373:                     //soapEnvelopeXml.Save(stream);
  374:                 }
  375:  
  376:                 using (WebResponse response = request.GetResponse())
  377:                 {
  378:                     using (StreamReader rd = new StreamReader(response.GetResponseStream()))
  379:                     {
  380:                         soapResult = rd.ReadToEnd();
  381:  
  382:                         soapResultXmlDocument.LoadXml(soapResult);
  383:                     }
  384:                 }
  385:             }
  386:             catch (Exception)// e)
  387:             {
  388:             }
  389:         }
  390:  
  391:         ////////////////////////////////////////////////////////////////////////////
  392:  
  393:         /// <summary>
  394:         ///
  395:         /// </summary>
  396:         private Ia.Ftn.Cl.Models.Business.Nokia.Sdc.Response ParseSoapResponseXml(XmlDocument soapResultXmlDocument)
  397:         {
  398:             int index;
  399:             XmlNode headerXmlNode, bodyXmlNode;
  400:             Dictionary<string, string> parameterDictionary;
  401:             Ia.Ftn.Cl.Models.Business.Nokia.Sdc.Response response;
  402:  
  403:             parameterDictionary = new Dictionary<string, string>();
  404:             response = new Ia.Ftn.Cl.Models.Business.Nokia.Sdc.Response();
  405:  
  406:             if (soapResultXmlDocument.DocumentElement != null)
  407:             {
  408:                 headerXmlNode = soapResultXmlDocument.DocumentElement.ChildNodes[0].FirstChild;
  409:  
  410:                 response.Author = headerXmlNode.Attributes["extAuthor"] != null ? headerXmlNode.Attributes["extAuthor"].Value : string.Empty;
  411:                 response.Version = headerXmlNode.Attributes["extVersion"] != null ? headerXmlNode.Attributes["extVersion"].Value : string.Empty;
  412:                 response.Tmf854Version = headerXmlNode.Attributes["tmf854Version"] != null ? headerXmlNode.Attributes["tmf854Version"].Value : string.Empty;
  413:  
  414:                 foreach (XmlNode c in headerXmlNode.ChildNodes)
  415:                 {
  416:                     if (c.LocalName == "activityName") response.ActivityName = c.InnerText;
  417:                     else if (c.LocalName == "msgName") response.MessageName = c.InnerText;
  418:                     else if (c.LocalName == "msgType") response.MessageType = c.InnerText;
  419:                     else if (c.LocalName == "senderURI") response.SenderUri = c.InnerText;
  420:                     else if (c.LocalName == "destinationURI") response.DestinationUri = c.InnerText;
  421:                     else if (c.LocalName == "communicationPattern") response.CommunicationPattern = c.InnerText;
  422:                     else if (c.LocalName == "communicationStyle") response.CommunicationStyle = c.InnerText;
  423:                     else if (c.LocalName == "activityStatus") response.ActivityStatus = c.InnerText;
  424:                     else if (c.LocalName == "timestamp")
  425:                     {
  426:                         if (DateTime.TryParseExact(c.InnerText, @"yyyyMMddTHHmmss.fffzzz", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime dt))
  427:                         {
  428:                             // 20191010T133709.559+0300
  429:                             response.Timestamp = dt;
  430:                         }
  431:                         else
  432:                         {
  433:                             response.Timestamp = DateTime.MinValue;
  434:  
  435:                             response.BodyText = c.InnerText;
  436:                         }
  437:                     }
  438:  
  439:                 }
  440:  
  441:                 response.ReturnCode = response.ActivityStatus == "SUCCESS" ? Ia.Ftn.Cl.Models.Client.Nokia.Sdc.ResultCode.Successful : Ia.Ftn.Cl.Models.Client.Nokia.Sdc.ResultCode.Failure;
  442:  
  443:                 bodyXmlNode = soapResultXmlDocument.DocumentElement.ChildNodes[1].FirstChild;
  444:  
  445:                 //response.BodyText = bodyXmlNode.OuterXml;
  446:  
  447:                 if (response.IsSuccessfull)
  448:                 {
  449:                     index = 0;
  450:  
  451:                     foreach (XmlNode xn in bodyXmlNode.ChildNodes)
  452:                     {
  453:                         if (xn.HasChildNodes)
  454:                         {
  455:                             foreach (XmlNode xn2 in xn.ChildNodes)
  456:                             {
  457:                                 if (xn2.HasChildNodes)
  458:                                 {
  459:                                     foreach (XmlNode xn3 in xn2.ChildNodes)
  460:                                     {
  461:                                         if (xn3.HasChildNodes)
  462:                                         {
  463:                                             foreach (XmlNode xn4 in xn3.ChildNodes)
  464:                                             {
  465:                                                 if (xn4.HasChildNodes)
  466:                                                 {
  467:  
  468:                                                 }
  469:                                                 else parameterDictionary.Add(xn3.LocalName + index, xn3.InnerText);
  470:                                             }
  471:                                         }
  472:                                         else parameterDictionary.Add(xn2.LocalName, xn2.InnerText);
  473:                                     }
  474:                                 }
  475:                                 else parameterDictionary.Add(xn.LocalName, xn.InnerText);
  476:  
  477:                                 index++;
  478:                             }
  479:                         }
  480:                         else parameterDictionary.Add(xn.LocalName, xn.InnerText);
  481:                     }
  482:  
  483:                     response.ParameterDictionary = parameterDictionary;
  484:                 }
  485:             }
  486:             else
  487:             {
  488:                 response.ReturnCode = Ia.Ftn.Cl.Models.Client.Nokia.Sdc.ResultCode.DocumentElementIsNull;
  489:             }
  490:  
  491:             return response;
  492:         }
  493:  
  494:         ////////////////////////////////////////////////////////////////////////////
  495:  
  496:         /// <summary>
  497:         /// Create a soap webrequest to [Url]
  498:         /// </summary>
  499:         /// <see cref="http://www.roelvanlisdonk.nl/?p=1893"/>
  500:         /// <returns></returns>
  501:         private HttpWebRequest CreateWebRequest(string url, string action)
  502:         {
  503:             HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
  504:  
  505:             webRequest.Headers.Add(@"SOAP:" + action);
  506:             webRequest.ContentType = "text/xml;charset=\"utf-8\"";
  507:             webRequest.Accept = "text/xml";
  508:             webRequest.Method = "POST";
  509:  
  510:             return webRequest;
  511:         }
  512:  
  513:         ////////////////////////////////////////////////////////////////////////////
  514:         ////////////////////////////////////////////////////////////////////////////
  515:     }
  516:  
  517:     ////////////////////////////////////////////////////////////////////////////
  518:     ////////////////////////////////////////////////////////////////////////////
  519: }