Da ich selbst sehr lange Probleme hatte einen SharePoint Webservice von einem Client (nicht direkt vom SharePoint Server) aufzurufen habe ich mich entschieden meinen letztendlich entstandenen Code zu veröffentlichen.
Dieser Ablauf kann nur Asynchron 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);
}
Kommentare zum Snippet