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);
}
Alte URL:
/snippet/sharepoint-webservice-asynchron-aufrufen/3794