C# .NET API Kit

Here is a C# .NET code example.

  1. using System;
  2. using System.Text;
  3. using System.Xml;
  4. using System.IO;
  5. using System.Net;
  6. namespace ExampleXML
  7. {
  8. class Program
  9. {
  10. static string url =
    "http://sms.message-platform.com/xml/send.aspx";
  11. static void Main(string[] args)
  12. {
  13. // Set Debug to true to output request and response XML
  14. bool debug = true;
  15. // Account Parameters
  16. string username = "My_User";
  17. string password = "My_Pass";
  18. string content = "Mediaburst XML API Test - C# Example";
  19. /*
  20. Numbers to send to
  21. Normally this would come from your database/application
  22. */
  23. string[] numbers = { "447000000001", "447000000002",
    "447000000abc" };
  24. // Build the XML request to send
  25. XmlDocument sendDoc = new XmlDocument();
  26. XmlDeclaration myDec = sendDoc.CreateXmlDeclaration("1.0",
    "utf-8", null);
  27. XmlElement messageList = sendDoc.CreateElement("Message");
  28. sendDoc.AppendChild(messageList);
  29. XmlElement usernameTag = sendDoc.CreateElement("Username");
  30. usernameTag.InnerText = username;
  31. messageList.AppendChild(usernameTag);
  32. XmlElement passwordTag = sendDoc.CreateElement("Password");
  33. passwordTag.InnerText = password;
  34. messageList.AppendChild(passwordTag);
  35. // Create an SMS Element for each recipient
  36. foreach (string number in numbers)
  37. {
  38. XmlElement smsTag = sendDoc.CreateElement("SMS");
  39. XmlElement toTag = sendDoc.CreateElement("To");
  40. toTag.InnerText = number;
  41. smsTag.AppendChild(toTag);
  42. XmlElement contentTag = sendDoc.CreateElement("Content");
  43. contentTag.InnerText = content;
  44. smsTag.AppendChild(contentTag);
  45. messageList.AppendChild(smsTag);
  46. }
  47. if (debug)
  48. Console.WriteLine("Request: " + sendDoc.OuterXml);
  49. try
  50. {
  51. XmlDocument respDoc = SendXmlDoc(sendDoc);
  52. if (debug)
  53. Console.WriteLine("Response: " + respDoc.InnerXml);
  54. int errNo = 0;
  55. string errDesc = String.Empty;
  56. foreach (XmlNode docChild in
    respDoc.DocumentElement.ChildNodes)
  57. {
  58. switch (docChild.Name)
  59. {
  60. case "SMS_Resp":
  61. string msgTo = String.Empty;
  62. string msgId = String.Empty;
  63. int msgErrNo = 0;
  64. string msgErrDesc = String.Empty;
  65. foreach (XmlNode respNode in
    docChild.ChildNodes)
  66. {
  67. switch (respNode.Name)
  68. {
  69. case "To":
  70. msgTo = respNode.InnerText;
  71. break;
  72. case "MessageID":
  73. msgId = respNode.InnerText;
  74. break;
  75. case "ErrNo":
  76. int.TryParse(respNode.InnerText,
    out msgErrNo);
  77. break;
  78. case "ErrDesc":
  79. msgErrDesc = respNode.InnerText;
  80. break;
  81. }
  82. }
  83. if (msgErrNo > 0)
  84. {
  85. Console.WriteLine("To: " + msgTo+" Error
    "+msgErrNo+": "+msgErrDesc);
  86. }
  87. else
  88. {
  89. Console.WriteLine("To: " + msgTo + " ID:
    " + msgId);
  90. }
  91. break;
  92. case "ErrNo":
  93. int.TryParse(docChild.InnerText ,out errNo);
  94. break;
  95. case "ErrDesc":
  96. errDesc = docChild.InnerText;
  97. break;
  98. }
  99. }
  100. if (errNo > 0)
  101. {
  102. Console.WriteLine("Error in request");
  103. Console.WriteLine("Error Number: " + errNo + "
    Description: " + errDesc);
  104. }
  105. }
  106. catch (WebException ex)
  107. {
  108. Console.WriteLine("Web Exception: " + ex.Message);
  109. }
  110. catch (XmlException ex)
  111. {
  112. Console.WriteLine("Xml Exception: " + ex.Message);
  113. }
  114. catch (Exception ex)
  115. {
  116. Console.WriteLine("Exception: " + ex.Message);
  117. }
  118. }
  119. /// <summary>
  120. /// POSTs the XML document to Mediaburst API webserver
  121. /// </summary>
  122. /// <param name="myDoc">XML Document containing SMS
    messages</param>
  123. /// <returns>XML Document from the API</returns>
  124. static private XmlDocument SendXmlDoc(XmlDocument myDoc)
  125. {
  126. byte[] buffer = Encoding.UTF8.GetBytes(myDoc.OuterXml);
  127. WebRequest myRequest = WebRequest.Create(url);
  128. myRequest.ContentType = "text/xml";
  129. myRequest.ContentLength = buffer.Length;
  130. myRequest.Method = "POST";
  131. Stream myStream = myRequest.GetRequestStream();
  132. myStream.Write(buffer, 0, buffer.Length);
  133. WebResponse myResponse = myRequest.GetResponse();
  134. if (((HttpWebResponse)myResponse).StatusCode ==
    HttpStatusCode.OK)
  135. {
  136. XmlReaderSettings readSettings = new XmlReaderSettings();
  137. readSettings.IgnoreWhitespace = true;
  138. readSettings.ValidationType = ValidationType.None;
  139. XmlReader myXmlRead =
    XmlReader.Create(myResponse.GetResponseStream(), readSettings);
  140. XmlDocument respDoc = new XmlDocument();
  141. respDoc.Load(myXmlRead);
  142. return respDoc;
  143. }
  144. else
  145. {
  146. throw new WebException("Non 200 Status Code:"+
    ((HttpWebResponse)myResponse).StatusCode.ToString());
  147. }
  148. }
  149. }
  150. }
using System;
using System.Text;
using System.Xml;
using System.IO;
using System.Net;

namespace ExampleXML { class Program { static string url = "http://sms.message-platform.com/xml/send.aspx";

static void Main(string[] args) { // Set Debug to true to output request and response XML bool debug = true;

// Account Parameters string username = "My_User"; string password = "My_Pass";

string content = "Mediaburst XML API Test - C# Example";

/* Numbers to send to Normally this would come from your database/application */ string[] numbers = { "447000000001", "447000000002", "447000000abc" };

// Build the XML request to send XmlDocument sendDoc = new XmlDocument(); XmlDeclaration myDec = sendDoc.CreateXmlDeclaration("1.0", "utf-8", null); XmlElement messageList = sendDoc.CreateElement("Message"); sendDoc.AppendChild(messageList); XmlElement usernameTag = sendDoc.CreateElement("Username"); usernameTag.InnerText = username; messageList.AppendChild(usernameTag); XmlElement passwordTag = sendDoc.CreateElement("Password"); passwordTag.InnerText = password; messageList.AppendChild(passwordTag);

// Create an SMS Element for each recipient foreach (string number in numbers) { XmlElement smsTag = sendDoc.CreateElement("SMS"); XmlElement toTag = sendDoc.CreateElement("To"); toTag.InnerText = number; smsTag.AppendChild(toTag);

XmlElement contentTag = sendDoc.CreateElement("Content"); contentTag.InnerText = content; smsTag.AppendChild(contentTag);

messageList.AppendChild(smsTag); } if (debug) Console.WriteLine("Request: " + sendDoc.OuterXml);

try { XmlDocument respDoc = SendXmlDoc(sendDoc); if (debug) Console.WriteLine("Response: " + respDoc.InnerXml);

int errNo = 0; string errDesc = String.Empty;

foreach (XmlNode docChild in respDoc.DocumentElement.ChildNodes) { switch (docChild.Name) { case "SMS_Resp": string msgTo = String.Empty; string msgId = String.Empty; int msgErrNo = 0; string msgErrDesc = String.Empty; foreach (XmlNode respNode in docChild.ChildNodes) { switch (respNode.Name) { case "To": msgTo = respNode.InnerText; break; case "MessageID": msgId = respNode.InnerText; break; case "ErrNo": int.TryParse(respNode.InnerText, out msgErrNo); break; case "ErrDesc": msgErrDesc = respNode.InnerText; break; } } if (msgErrNo > 0) { Console.WriteLine("To: " + msgTo+" Error "+msgErrNo+": "+msgErrDesc); } else { Console.WriteLine("To: " + msgTo + " ID: " + msgId); } break; case "ErrNo": int.TryParse(docChild.InnerText ,out errNo); break; case "ErrDesc": errDesc = docChild.InnerText; break; } } if (errNo > 0) { Console.WriteLine("Error in request"); Console.WriteLine("Error Number: " + errNo + " Description: " + errDesc); } } catch (WebException ex) { Console.WriteLine("Web Exception: " + ex.Message); } catch (XmlException ex) { Console.WriteLine("Xml Exception: " + ex.Message); } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); } }

/// <summary> /// POSTs the XML document to Mediaburst API webserver /// </summary> /// <param name="myDoc">XML Document containing SMS messages</param> /// <returns>XML Document from the API</returns> static private XmlDocument SendXmlDoc(XmlDocument myDoc) { byte[] buffer = Encoding.UTF8.GetBytes(myDoc.OuterXml); WebRequest myRequest = WebRequest.Create(url); myRequest.ContentType = "text/xml"; myRequest.ContentLength = buffer.Length; myRequest.Method = "POST"; Stream myStream = myRequest.GetRequestStream(); myStream.Write(buffer, 0, buffer.Length); WebResponse myResponse = myRequest.GetResponse(); if (((HttpWebResponse)myResponse).StatusCode == HttpStatusCode.OK) { XmlReaderSettings readSettings = new XmlReaderSettings(); readSettings.IgnoreWhitespace = true; readSettings.ValidationType = ValidationType.None; XmlReader myXmlRead = XmlReader.Create(myResponse.GetResponseStream(), readSettings); XmlDocument respDoc = new XmlDocument(); respDoc.Load(myXmlRead); return respDoc; } else { throw new WebException("Non 200 Status Code:"+ ((HttpWebResponse)myResponse).StatusCode.ToString()); }

}

} }