Feedback

SharePoint Webservice asynchron aufrufen

Sprache: C#

Da ich selbst sehr lange Probleme hatte einen SharePoint Webservice von einem Client ([u]nicht direkt vom SharePoint Server[/u]) aufzurufen habe ich mich entschieden meinen letztendlich entstandenen Code zu veröffentlichen. Dieser Ablauf kann nur [b]Asynchron[/b] aufgerufen werden (z.B.: in Windows Store Apps) Zusätzlich muss dem Projekt ein Dienstverweis als "Service Reference" hinzugefügt werden, der auf den Webservice referenziert und somit in unserem Fall die Klasse "WebServiceKantine" bereitstellt. PS: Seid nicht so böse mit mir wenn ihr Rechtschreibfehler findet oder wenn man den Code besser gestalten könnte. Ich bin nicht der Ober-C#-Guru … Ich will hier nur anderen Helfen, die vielleicht vor dem gleichem Problem stehen.
using System.ServiceModel;
using System.Xml;
using System.Xml.Linq;
using System.Text.RegularExpressions;
using Windows.UI.Popups;

.
.
.

async void get_Data_from_Webservice()
        {
            BasicHttpBinding basicHttpBinding = new BasicHttpBinding();
            basicHttpBinding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
            basicHttpBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;
            basicHttpBinding.MaxReceivedMessageSize = 5000000;
            basicHttpBinding.OpenTimeout = new TimeSpan(1, 0, 0);
            basicHttpBinding.CloseTimeout = new TimeSpan(1, 0, 0);
            basicHttpBinding.SendTimeout = new TimeSpan(1, 0, 0);
            basicHttpBinding.ReceiveTimeout = new TimeSpan(1, 0, 0);

            EndpointAddress endpoint = new EndpointAddress("http://sharepoin.server.name/[Pfad]/[zur]/[Websitesammlung]/_vti_bin/lists.asmx");
            string listName = "{1298a7bb-f811-45e3-9db0-9884e79610b8}"; //GUID der Liste
            string viewName = "{091791D1-4A6D-4402-8E7A-AB10BFF6C6A2}"; //GUID des Views
            string rowLimit = "25";                                     //Maximale Trefferanzahl

            XElement ndQuery = new XElement("Query");
            XElement ndViewFields = new XElement("ViewFields");
            XElement ndQueryOptions = new XElement("QueryOptions");

            WebServiceKantine.ListsSoapClient client = new WebServiceKantine.ListsSoapClient(basicHttpBinding, endpoint);
            client.ClientCredentials.Windows.ClientCredential = (System.Net.NetworkCredential)System.Net.CredentialCache.DefaultCredentials;
            client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;                        //Das Ergebnis in Form eines XML Streams
            WebServiceKantine.GetListItemsResponse response = await client.GetListItemsAsync(listName, viewName, ndQuery, ndViewFields, rowLimit, ndQueryOptions, null);
        }
using System.ServiceModel;
using System.Xml;
using System.Xml.Linq;
using System.Text.RegularExpressions;
using Windows.UI.Popups;

.
.
.

async void get_Data_from_Webservice()
        {
            BasicHttpBinding basicHttpBinding = new BasicHttpBinding();
            basicHttpBinding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
            basicHttpBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;
            basicHttpBinding.MaxReceivedMessageSize = 5000000;
            basicHttpBinding.OpenTimeout = new TimeSpan(1, 0, 0);
            basicHttpBinding.CloseTimeout = new TimeSpan(1, 0, 0);
            basicHttpBinding.SendTimeout = new TimeSpan(1, 0, 0);
            basicHttpBinding.ReceiveTimeout = new TimeSpan(1, 0, 0);

            EndpointAddress endpoint = new EndpointAddress("http://sharepoin.server.name/[Pfad]/[zur]/[Websitesammlung]/_vti_bin/lists.asmx");
            string listName = "{1298a7bb-f811-45e3-9db0-9884e79610b8}"; //GUID der Liste
            string viewName = "{091791D1-4A6D-4402-8E7A-AB10BFF6C6A2}"; //GUID des Views
            string rowLimit = "25";                                     //Maximale Trefferanzahl

            XElement ndQuery = new XElement("Query");
            XElement ndViewFields = new XElement("ViewFields");
            XElement ndQueryOptions = new XElement("QueryOptions");

            WebServiceKantine.ListsSoapClient client = new WebServiceKantine.ListsSoapClient(basicHttpBinding, endpoint);
            client.ClientCredentials.Windows.ClientCredential = (System.Net.NetworkCredential)System.Net.CredentialCache.DefaultCredentials;
            client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;                        //Das Ergebnis in Form eines XML Streams
            WebServiceKantine.GetListItemsResponse response = await client.GetListItemsAsync(listName, viewName, ndQuery, ndViewFields, rowLimit, ndQueryOptions, null);
        }