Exempel 1
Detta är ett exempelprojekt som visar hur man kan göra anrop mot de tjänster som finns.Det är ett .NET 4 projekt skrivet i Microsoft Visual Studio 2010.
Alla typer som behövs för att kunna serialisera objekt returnerade av tjänsterna finns samlade i detta bibliotek
Exemplet visar de tjänster som finns, vilka parametrar de har, vilka värden dessa parametrar kan ha (i de fall de är fördefinierade), samt visar upp svaret från tjänsterna som ren text.
Ladda ner projekt
Exempel 2
Nedanstående klasser går att använda direkt för att hämta data från VISS API.APICaller - class för att göra anrop till API:t samt konvertera svaret till rätt typ
using System; using System.Collections.Generic; using System.Text; public static class APICaller { public static T GetData<T>(string method, IEnumerable<KeyValuePair<string, string>> parameters) where T : new() { if (parameters == null) { parameters = new KeyValuePair<string, string>[0]; } string apiUrl = System.Configuration.ConfigurationManager.AppSettings[ "APIURL" ]; if (string.IsNullOrEmpty(apiUrl)) { throw new Exception("API URL saknas i inställningarna"); } string apiKey = System.Configuration.ConfigurationManager.AppSettings[ "APIKey" ]; if (string.IsNullOrEmpty(apiKey)) { throw new Exception("API Nyckel saknas i inställningarna"); } var webClient = new System.Net.WebClient { Encoding = Encoding.UTF8 }; webClient.Headers.Add(apiKey); var parameterString = new StringBuilder(); foreach (KeyValuePair<string, string> parameter in parameters) { parameterString.AppendFormat("&{0}={1}", parameter.Key, parameter.Value); } string url = string.Format("{0}?method={1}&format={2}{3}", apiUrl, method, WaterCharacteristics.APIServices.Common.APIResponseFormats.Json, parameterString); webClient.BaseAddress = url; string result = webClient.DownloadString(url); var serializer = new Newtonsoft.Json.JsonSerializer(); using (var stringReader = new System.IO.StringReader(result)) { T data = serializer.Deserialize<T>(new Newtonsoft.Json.JsonTextReader(stringReader)); return data; } } }Exempel på användning av ovanstående klass (APICaller.GetData) för att hämta vatten av en angiven kategori i en angiven kommun
using System; using System.Collections.Generic; using System.Text; class Program { static void Main() { try { // Set the filters to narrow the result on var parameters = new List<KeyValuePair<string, string>> { new KeyValuePair<string, string>("municipalitycode", "0880"), new KeyValuePair<string, string>("watercategory", "RW"), new KeyValuePair<string, string>("reportunitoption", "ru") }; // Perform the API request var waters = APICaller.GetData<List<WaterCharacteristics.APIServices.Common.WaterWrapper>>("waters", parameters); Console.WriteLine("Found {0} waters", waters.Count); foreach (var water in waters) { Console.WriteLine("{0} - {1}", water.Name, water.EU_CD); } } catch (Exception ex) { Console.WriteLine("Error: {0}", ex.Message); } } }}Exempel på användning av ovanstående klass (APICaller.GetData) för att hämta ekologisk status och -potential för en angiven kommuns vatten
using System; using System.Collections.Generic; using System.Text; class Program { static void Main() { // Set the filters to narrow the result on var parameters = new List<KeyValuePair<string, string>> { // The geographical region to target new KeyValuePair<string, string>("municipalitycode", "0580"), // Only include waters that has data for either ecological status and/or potential new KeyValuePair<string, string>("parameter", "ECO_STAT"), new KeyValuePair<string, string>("parameter", "ECO_POT") }; // Perform the API request var waters = APICaller.GetData<List<WaterCharacteristics.APIServices.Common.ClassifiedWaterWrapper>> ("waterclassificationmotivations", parameters); Console.WriteLine("Found {0} waters", waters.Count); // Iterate through the result to get all motivations foreach (var water in waters) { foreach (var motivation in water.Motivations) { Console.WriteLine("Water: {0}, Parameter: {1}, Classification: {2}", water.Name, motivation.ParameterSwedishName, motivation.ClassificationSwedishName); } } } }Konfiguration som används av ovanstående exempel (placeras i din config-fil i projektet)
<?xml version="1.0"?> <configuration> <appSettings> <add key="APIURL" value="http://www.viss.lansstyrelsen.se/API"/> <add key="APIKey" value="BYT_MOT_DIN_PERSONLIGA_APINYCKEL"/> </appSettings> </configuration>Ovanstående exempel är gjorda i .NET 4.0 Client Profile.
Följande referenser används i exemplen.
- Newtonsoft.Json 4.0.8.0 för deserialisering av svar från VISS API
- WaterCharacteristics.APIServices.Common.dll för tillgång till de typer som används av VISS API
- System.Configuration.dll för att läsa konfigurationsvärden (ingår i .NET 4.0)