Robot Web Services
3HAC050973-001 Revision:L, Application Manual - Robot Web Services
HelloControllerXml.cs

This is an example of how to use Robot Web Services, XML and C#.

The output will look like:

  system=RW6_1014 version=6.00.1014.00
  category=OS option=RobotWare OS and English
  category=Options option=613-1 Collision Detection
  ...
  Hit ENTER to exit ...

Program:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.IO;
using System.Xml;
using System.Xml.Linq;
namespace HelloControllerXml
{
class Program
{
private CookieContainer _cookies = new CookieContainer(); // re-use http session between requests
private NetworkCredential _credentials = new NetworkCredential("Default User", "robotics");
static void Main(string[] args)
{
Program ctrl = new Program();
// for (int noRequest = 0; noRequest < 100; noRequest++) // test to do multiple requests
{
Stream xml = ctrl.GetSystemResource("http://192.168.8.105"); // get the system resource
ctrl.DisplayData(xml); // display the system resource
xml.Close(); // close used stream, requests will hang if not the stream is close
}
Console.WriteLine("Hit ENTER to exit...");
Console.ReadLine();
}
// <summary>
// Ge the system resource
// </summary>
// <param name="host"></param>
// <returns>XML stream</returns>
Stream GetSystemResource(string host)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(host + "/rw/system"));
request.Credentials = _credentials;
request.Proxy = null; // don't use proxy, it's aussumed that the RC/VC is reachable without going via proxy
request.Method = "GET";
request.CookieContainer = _cookies;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
return response.GetResponseStream();
}
// <summary>
// Deserialize system resource xml stream
// </summary>
// <param name="xmldata"></param>
void DisplayData(Stream xmldata)
{
XmlDocument doc = new XmlDocument();
doc.Load(xmldata);
// Create an XmlNamespaceManager for resolving namespaces.
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("ns", "http://www.w3.org/1999/xhtml");
// Use XPath to get nodes
// get the 'sys-system-li' li item
XmlNodeList sysNodes = doc.SelectNodes("//ns:li[@class='sys-system-li']", nsmgr);
foreach(XmlNode sysNode in sysNodes)
{
XmlNode systemNameNode = sysNode.SelectSingleNode("ns:span[@class='name']", nsmgr);
XmlNode systemVersionNode = sysNode.SelectSingleNode("ns:span[@class='rwversion']", nsmgr);
XmlNode systemVersionNameNode = sysNode.SelectSingleNode("ns:span[@class='rwversionname']", nsmgr);
Console.WriteLine("system={0} version={1} versionname={2}", systemNameNode.InnerText.ToString(), systemVersionNode.InnerText.ToString(), systemVersionNameNode.InnerText.ToString());
}
// Get options from stream
// get all 'sys-option-li' li items
XmlNodeList optionNodes = doc.SelectNodes("//ns:li[@class='sys-option-li']", nsmgr);
foreach (XmlNode optNode in optionNodes)
{
XmlNode systemOptionNode = optNode.SelectSingleNode("ns:span[@class='option']", nsmgr);
Console.WriteLine("option={0}", systemOptionNode.InnerText.ToString());
}
}
}
}