This simple C# code sample uses only .NET libraries (—no external dependencies) to:
- Authenticate to a controller
- Read a point
- Return the response JSON as a string
The sample calls the GetAnalogInputs() endpoint at an Opto 22 demo controller.
It was written with Visual Studio® 2013, using .NET 4.5.
Tip: You can use SwaggerHub to automatically generate a client-side C# proxy from the SNAP PAC REST API metadata.
//This C# example uses the SNAP PAC REST API to get the analog inputs and values
//from the specified controller. The example uses standard .NET libraries.
//It doesn't use any external, third-party plug-ins. This code sample was
//written with Visual Studio 2013, using .NET 4.5, running on
//Windows 10 Anniversary Edition.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net; //If necessary, add this reference to your project.
//You need it to authenticate to the API.
namespace GetAnalogInputs
{
class Program
{
static void Main(string[] args)
{
OptoApiClient.GetAnalogInputs();
}
}
public static class OptoApiClient
{
//The class has one method. The method performs an HTTP GET request on
//the specified controller, passes in logon credentials, and calls the
//GetAnalogInputs endpoint.
public static void GetAnalogInputs()
{
//The controller is specified by its IP address or DNS server name.
//This address hits a demo server.
//TO DO: Replace restpac.groov.com with your controller's IP
//address or server name.
var url = "http://restpac.groov.com/api/v1/device/strategy/ios/analogInputs";
//There are several ways to consume the API. We're using the
//WebClient class because it's simple and straightforward.
//Note that this class consumes the API synchronously.
var client = new WebClient
{
//TO DO: If you’ve changed the URL to access your
//controller, then replace ro/ro with the key-value
//configured for your credentials.
Credentials = new NetworkCredential("ro", "ro"),
};
//This statement instantiates a string for the returned JSON.
var content = client.DownloadString(url);
Console.WriteLine("The returned JSON string is:");
//This statement writes the JSON to the console.
Console.WriteLine(content);
Console.WriteLine();
Console.WriteLine("Press Enter to close the console.");
Console.ReadLine();
}
}
}