Meny

Meny

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.