Das folgende Beispiel zeigt, wie man mit einer UWP Anwendung die Daten einer Web API Schnittstelle laden kann.
UWP Anwendung
Das Beispiel zeigt eine Windows Universal Platform App UWP, welche die Daten aus einer Api Seite eines lokal laufenden Webservers enthÀlt.
C# Code zum laden der Api Werte
Die Daten werden in einer recht einfachen Methode geholt.
Dabei wird zunÀchst ein HttpClient erstellt und dieser liest den kompletten Json-String der Api-Webseite ein.
Dannach werden alle DatensÀtze in ein jsonArray konvertierung und anschliessend in einzelnen DatensÀtzen durchlaufen und angezeigt
using System; using System.Net.Http; //*HttpClient using Windows.Data.Json; //*JsonObject using Windows.UI.Xaml; using Windows.UI.Xaml.Controls;
namespace api01 {
public sealed partial class MainPage : Page { public MainPage() { this.InitializeComponent(); }
private void btnStart_Click(object sender, RoutedEventArgs e) { read_API_Data();
}
public async void read_API_Data() { //---------------< read_API_Data() >--------------- //< read webApi > string sURL = "http://localhost:51198/api/projects"; HttpClient client = new HttpClient(); string sResponse = await client.GetStringAsync(sURL); //</ read webApi >
//< get Json values > JsonArray jsonArray = JsonArray.Parse(sResponse); foreach (var jsonRow in jsonArray) { //----< json Row >---- JsonObject jsonObject=jsonRow.GetObject();
//< values > string IDProject= jsonObject["idProject"].ToString(); string Title = jsonObject["title"].ToString(); string Text = jsonObject["text"].ToString(); string dtEdit = jsonObject["dtEdit"].ToString(); //</ values >
tbxResults.Text += Environment.NewLine + "-------"; tbxResults.Text += Environment.NewLine + "idProject=" + IDProject; tbxResults.Text += Environment.NewLine + "Title=" + Title; tbxResults.Text += Environment.NewLine + "Text=" + Text; tbxResults.Text += Environment.NewLine + "dtEdit=" + dtEdit; //----</ json Row >---- }
//</ get Json values > //---------------</ read_API_Data() >--------------- }
} } |
UWP Mainpage
<Page x:Class="api01.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:api01" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid> <Button x:Name="btnStart" Content="Start" HorizontalAlignment="Left" Margin="44,35,0,0" VerticalAlignment="Top" Height="106" Width="143" FontSize="22" Click="btnStart_Click" /> <ScrollViewer Margin="201,32,226,119" VerticalScrollBarVisibility="Visible" VerticalScrollMode="Enabled"> <TextBlock x:Name="tbxResults" HorizontalAlignment="Stretch" TextWrapping="Wrap" VerticalAlignment="Stretch" /> </ScrollViewer> </Grid> </Page> |
Webserver
Der Webserver lÀuft mit Asp.Net Core MVC
Hier wird in der Api ein ApiController erstellt
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Freelance.Data; using Freelance.Models; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc;
namespace Freelance.Controllers.api {
[Produces("application/json")] [Route("api/Projects")] public class ProjectsController : Controller { //--------------< Class: Controller >--------------------- #region Controller Init private readonly ApplicationDbContext _dbContext;
public ProjectsController(ApplicationDbContext dbContext) { //----< Init: Controller >---- _dbContext = dbContext; //----</ Init: Controller >---- } #endregion
// GET: /api/index public List<ProjectModel> Index() { ///-------------< Index >-------------
//--< Get Linq.Query >-- //*gets last 10 Projects with View_Sum var query = (from n in _dbContext.tbl_Projects where n.IsDraft == false orderby n.IDProject descending select n ).Take(10); //--</ Get Linq.Query >--
//----< fill Data_to_View >---- List<ProjectModel> dataList = query.ToList<ProjectModel>();
//< out > //*output to client return dataList; //</ out > ///-------------</ Index >------------- }
//--------------</ Class: Controller >--------------------- } } |
Die dazugehörende WebApi in Asp.Net Core MVC Api
http://localhost:51198/api/projects
Beispiel der Json Api Antwort
3-DatensÀtze von Projekten
[{"idProject":411,"idOwner":1,"title":"Test Title","text":"Test Text","html":"Test HTML","urlRef":"u","folder":"Freelancer","dtEdit":"2018-06-10T12:03:07.047","dtCreated":"2018-06-10T11:58:20.15","isDraft":false},{"idProject":403,"idOwner":1,"title":"Full-Stack Entwickler (m/w)","text":"FĂŒr einen Kunden suchen wir einen Full-Stack Entwickler (m/w) in Esslingen. \r\n\r\nTĂ€tigkeiten\r\n\r\n\r\nAnforderungsklĂ€rung mit den Product Ownern und dem Solution Architect anhand von gegebenen User Stories in Visual Studio\r\n\r\n\r\nEinforderung, Analyse und Abstimmung erforderlicher Rahmendaten mit Experten aus der IT und den Fachbereichen\r\n\r\n\r\nAbstimmung der Realisierung mit dem Solution Architect\r\n\r\n\r\nEigenstĂ€ndige Implementierung von Azure-Cloud-Services und -Prozessen\r\n\r\n\r\nAktive Teilnahme am agilen Prozess nach Scrum, insbesondere Daily, Planning 1, Planning 2, Review & Retro\r\n\r\n\r\nEinhalten der Konzern- und Projektrahmenvereinbarungen \r\n\r\n\r\nEigenstĂ€ndige Organisation seiner Arbeitsweise\r\n\r\n\r\n\r\n\r\nSkills\r\n\r\n\r\nEntwicklung von Webanwendungen (Microservices, REST, Architekturpatterns)\r\n\r\n\r\nKenntnis des Microsoft-Stacks (ASP.NET, C#/F#, Azure)\r\n\r\n\r\nBeherrschung integrierter Entwicklungsprozesse und zugehöriger Werkzeuge (CI / DevOps, TDD, VSTS, GIT)\r\n\r\n\r\nErfahrung mit der Anbindung verschiedener Datentechnologien (RDMBS, EventStreams, graphorientierte Datenbanken, Azure Container)\r\n\r\n\r\nGute Kenntnisse gĂ€ngiger Protokolle und Technologien\r\n\r\n\r\nGrundlegende Kenntnisse in der Entwicklung statischer und dynamischer WebUIs\.... ..}] |