Expert API
C# Examples
A Simple GET Request
In the following example, we will use a C# Console application and System.Net.HttpWebRequest to get information about a particular product.
// "GET" request to Get a Product by ID
Console.WriteLine("Get Product By ID");
try
{
//set up request
string url = "https://services.expertoms.com/api/product/id/12345";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.Headers.Add(HttpRequestHeader.Authorization, "Basic username:password");
request.Accept = "application/json";
//get response
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
using (StreamReader respReader = new StreamReader(response.GetResponseStream()))
{
Console.WriteLine(respReader.ReadToEnd());
}
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
Console.WriteLine("END Get Product By ID");
A couple things to notice here:
- GET commands simply call a URL. There is no need to send additional data. Depending on the method, the argument would simply be the last part of the URL. If a method requires more arguments, they will be appended as query strings at the end of the url
- Remember to set the request.Accept as "application/json" if you want to have JSON returned from the service. By default, the service will return XML. If you would prefer to hav XML returned, then set dataType to "application/xml".
- All requests MUST be authenticated. Use request.Headers.Add(HttpRequestHeader.Authorization, "Basic username:password");
A Simple POST Request
In the following example, we will use a C# Console application and System.Net.HttpWebRequest to post an array of product IDs and recieve an array with Inventory information about those products.
// "POST" request to return inventory for an array of product IDs
Console.WriteLine("Get Inventory by ProductIDs");
try
{
//set up request
string url = "https://services.expertoms.com/api/product/inventorybyid";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/json";
string postData = "idType=DealerID&userID=0&productIDs=1234&productIDs=5678";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = postData.Length;
request.Headers.Add(HttpRequestHeader.Authorization, "Basic username:password");
request.Accept = "application/json";
//create request stream
using (Stream dataStream = request.GetRequestStream())
{
dataStream.Write(byteArray, 0, byteArray.Length);
}
//get response
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
using (StreamReader respReader = new StreamReader(response.GetResponseStream()))
{
Console.WriteLine(respReader.ReadToEnd());
}
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
Console.WriteLine("END Get Inventory by ProductIDs");
Some special considerations when using POST:
- When sending arrays as post data, add a querystring with the same name for each member of the array. For example, the proper syntax would be "name=value1&name=value2&name-value3...."
- All POST calls must have request.Method set to "POST"
- The appropriate ContentType for a POST call is "application/x-www-form-urlencoded".
- Don't forget to authenticate!
