Readdy Write  
0,00 €
Your View Money
Views: Count
Self 20% 0
Your Content 60% 0

Users by Links 0
u1*(Content+Views) 10% 0
Follow-Follower 0
s2*(Income) 5% 0

Count
Followers 0
Login Register as User

Code Sample: Mit UWP eine Web Api einlesen

26.06.2018 (👁17498)

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\....

..}]