SharePoint Online: Accessing Web Services
http://code.msdn.microsoft.com/office/SharePoint-Online-0bdeb2ca
Note: Add Web Reference as "https://sreekanth1apps.sharepoint.com/sites/apps/_vti_bin/Lists.asmx"
and give name it as "listsWS"
Note: Add Web Reference as "https://sreekanth1apps.sharepoint.com/sites/apps/_vti_bin/Lists.asmx"
and give name it as "listsWS"
using System;
using System.Net;
using System.Xml;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Security;
using System.Reflection;
using System.Globalization;
using System.Text.RegularExpressions;
using Microsoft.SharePoint.Client;
using System.Runtime.InteropServices;
using System.Collections.Generic;
namespace SPO_AccessAWebService
{
class Program
{
[STAThread]
static void Main(string[] args)
{
string siteURL = "https://sreekanth1apps.sharepoint.com/sites/apps";
Console.WriteLine("Opening
Site: " + siteURL);
using (ClientContext context = ClaimsClientContext.GetAuthenticatedContext(siteURL))
{
if (context != null)
{
context.Load(context.Web);
context.ExecuteQuery();
Console.WriteLine(context.Web.Title);
}
}
Console.WriteLine();
CookieCollection authCookie = ClaimsClientContext.GetAuthenticatedCookies(siteURL, 700, 500);
listsWS.Lists list = new listsWS.Lists();
list.Url = "https://sreekanth1apps.sharepoint.com/sites/apps/_vti_bin/Lists.asmx";
list.CookieContainer = new CookieContainer();
list.CookieContainer.Add(authCookie);
string listName = "Documents";
string viewName = "";
string rowLimit = "5";
XmlDocument xmlDoc = new XmlDocument();
XmlElement query = xmlDoc.CreateElement("Query");
XmlElement viewFields = xmlDoc.CreateElement("ViewFields");
XmlElement queryOptions = xmlDoc.CreateElement("QueryOptions");
query.InnerXml = "<Where><Gt><FieldRef
Name=\"ID\" />" + "<Value
Type=\"Counter\">0</Value></Gt></Where>";
viewFields.InnerXml = "<FieldRef Name =\"Title\" />";
queryOptions.InnerXml = "<IncludeMandatoryColumns>FALSE</IncludeMandatoryColumns>" + "<DateInUtc>TRUE</DateInUtc>";
XmlNode nodes = list.GetListItems(listName, viewName, query,
viewFields, rowLimit, null, string.Empty);
string ixml = list.GetList(listName).InnerXml;
Console.WriteLine("Retreiving
Items...");
foreach (XmlNode node in nodes)
{
if (node.Name == "rs:data")
{
for (int i = 0; i <
node.ChildNodes.Count; i++)
{
if (node.ChildNodes[i].Name == "z:row")
{
if
(node.ChildNodes[i].Attributes["ows_Title"] != null)
{
Console.WriteLine(node.ChildNodes[i].Attributes["ows_Title"].Value);
}
if
(node.ChildNodes[i].Attributes["ows_Created_x0020_Date"] != null)
{
Console.WriteLine(node.ChildNodes[i].Attributes["ows_Created_x0020_Date"].Value);
}
}
}
}
}
Console.ReadKey();
}
}
class ClaimsClientContext
{
public static CookieCollection GetAuthenticatedCookies(string targetSiteUrl, int popUpWidth, int popUpHeight)
{
CookieCollection authCookie = null;
using (ClaimsWebAuth webAuth = new ClaimsWebAuth(targetSiteUrl, popUpWidth, popUpHeight))
{
authCookie = webAuth.Show();
}
return authCookie;
}
public static ClientContext GetAuthenticatedContext(string targetSiteUrl)
{
return (GetAuthenticatedContext(targetSiteUrl, 0, 0));
}
public static ClientContext GetAuthenticatedContext(string targetSiteUrl, int popUpWidth, int popUpHeight)
{
CookieCollection cookies = null;
cookies = ClaimsClientContext.GetAuthenticatedCookies(targetSiteUrl,
popUpWidth, popUpHeight);
if (cookies == null) return null;
ClientContext context = new ClientContext(targetSiteUrl);
try
{
context.ExecutingWebRequest += delegate(object sender, WebRequestEventArgs e)
{
e.WebRequestExecutor.WebRequest.CookieContainer = new CookieContainer();
foreach (Cookie cookie in cookies)
{
e.WebRequestExecutor.WebRequest.CookieContainer.Add(cookie);
}
};
}
catch
{
if (context != null) context.Dispose();
throw;
}
return context;
}
}
class ClaimsWebAuth : IDisposable
{
#region
Construction
public ClaimsWebAuth(string targetSiteUrl, int popUpWidth, int popUpHeight)
{
if (string.IsNullOrEmpty(targetSiteUrl)) throw new ArgumentException(Constants.MSG_REQUIRED_SITE_URL);
this.fldTargetSiteUrl = targetSiteUrl;
this.GetClaimParams(this.fldTargetSiteUrl, out this.fldLoginPageUrl, out this.fldNavigationEndUrl);
this.PopUpHeight = PopUpHeight;
this.PopUpWidth = PopUpWidth;
this.webBrowser = new WebBrowser();
this.webBrowser.Navigated += new WebBrowserNavigatedEventHandler(ClaimsWebBrowser_Navigated);
this.webBrowser.ScriptErrorsSuppressed = true;
this.webBrowser.Dock = DockStyle.Fill;
}
#endregion
#region
private Fields
private WebBrowser webBrowser;
private CookieCollection fldCookies;
private System.Windows.Forms.Form DisplayLoginForm;
#endregion
#region
Public Properties
private string fldLoginPageUrl;
public string LoginPageUrl
{
get { return fldLoginPageUrl; }
set { fldLoginPageUrl = value; }
}
private Uri fldNavigationEndUrl;
public Uri NavigationEndUrl
{
get { return fldNavigationEndUrl; }
set { fldNavigationEndUrl = value; }
}
private string fldTargetSiteUrl = null;
public string TargetSiteUrl
{
get { return fldTargetSiteUrl; }
set { fldTargetSiteUrl = value; }
}
public CookieCollection AuthCookies
{
get { return fldCookies; }
}
private bool fldIsCLAIMSite = false;
public bool IsCLAIMSite
{
get { return fldIsCLAIMSite; }
}
private int fldPopUpWidth = 0;
public int PopUpWidth
{
get { return fldPopUpWidth; }
set { fldPopUpWidth = value; }
}
private int fldPopUpHeight;
public int PopUpHeight
{
get { return fldPopUpHeight; }
set { fldPopUpHeight = value; }
}
#endregion
#region
Public Methods
public CookieCollection Show()
{
if (string.IsNullOrEmpty(this.LoginPageUrl)) throw new ApplicationException(Constants.MSG_NOT_CLAIM_SITE);
this.webBrowser.Navigate(this.LoginPageUrl);
DisplayLoginForm = new System.Windows.Forms.Form();
DisplayLoginForm.SuspendLayout();
int dialogWidth = Constants.DEFAULT_POP_UP_WIDTH;
int dialogHeight = Constants.DEFAULT_POP_UP_HEIGHT;
if (PopUpHeight != 0 && PopUpWidth != 0)
{
dialogWidth = Convert.ToInt32(PopUpWidth);
dialogHeight = Convert.ToInt32(PopUpHeight);
}
DisplayLoginForm.Width = dialogWidth;
DisplayLoginForm.Height =
dialogHeight;
DisplayLoginForm.Text = this.fldTargetSiteUrl;
DisplayLoginForm.Controls.Add(this.webBrowser);
DisplayLoginForm.ResumeLayout(false);
Application.Run(DisplayLoginForm);
return this.fldCookies;
}
#endregion
#region
Private Methods
private void GetClaimParams(string targetUrl, out string loginUrl, out Uri navigationEndUrl)
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(targetUrl);
webRequest.Method = Constants.WR_METHOD_OPTIONS;
#if DEBUG
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(IgnoreCertificateErrorHandler);
#endif
try
{
WebResponse response = (WebResponse)webRequest.GetResponse();
ExtraHeadersFromResponse(response, out loginUrl, out navigationEndUrl);
}
catch (WebException webEx)
{
ExtraHeadersFromResponse(webEx.Response, out loginUrl, out navigationEndUrl);
}
}
private bool ExtraHeadersFromResponse(WebResponse response, out string loginUrl, out Uri navigationEndUrl)
{
loginUrl = null;
navigationEndUrl = null;
try
{
navigationEndUrl = new Uri(response.Headers[Constants.CLAIM_HEADER_RETURN_URL]);
loginUrl = (response.Headers[Constants.CLAIM_HEADER_AUTH_REQUIRED]);
return true;
}
catch
{
return false;
}
}
private CookieCollection ExtractAuthCookiesFromUrl(string url)
{
Uri uriBase = new Uri(url);
Uri uri = new Uri(uriBase, "/");
string stringCookie = CookieReader.GetCookie(uri.ToString());
if (string.IsNullOrEmpty(stringCookie)) return null;
stringCookie =
stringCookie.Replace("; ", ",").Replace(";", ",");
CookieContainer cookieContainer = new CookieContainer();
cookieContainer.SetCookies(uri,
stringCookie);
return cookieContainer.GetCookies(uri);
}
#endregion
#region
Private Events
private void ClaimsWebBrowser_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
if (fldNavigationEndUrl != null && fldNavigationEndUrl.Equals(e.Url))
{
this.fldCookies = ExtractAuthCookiesFromUrl(this.LoginPageUrl);
this.DisplayLoginForm.Close();
}
}
#endregion
#region
IDisposable Methods
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
public void Dispose(bool disposing)
{
if (disposing)
{
if (this.webBrowser != null) this.webBrowser.Dispose();
if (this.DisplayLoginForm != null) this.DisplayLoginForm.Dispose();
}
}
#endregion
#region
Utilities
#if DEBUG
private bool IgnoreCertificateErrorHandler
(object sender,
System.Security.Cryptography.X509Certificates.X509Certificate
certificate,
System.Security.Cryptography.X509Certificates.X509Chain chain,
System.Net.Security.SslPolicyErrors
sslPolicyErrors)
{
return true;
}
#endif
#endregion
}
class Constants
{
public const string WR_METHOD_OPTIONS = "OPTIONS";
public const string FED_AUTH_COOKIE_NAME = "FedAuth";
public const string CLAIM_HEADER_RETURN_URL = "X-Forms_Based_Auth_Return_Url";
public const string CLAIM_HEADER_AUTH_REQUIRED = "X-FORMS_BASED_AUTH_REQUIRED";
public const string MSG_REQUIRED_SITE_URL = "The
Site URL is required.";
public const string MSG_NOT_CLAIM_SITE = "The
requested site does not appear to have claims enabled or the Login Url has not
been set.";
public const int DEFAULT_POP_UP_WIDTH = 925;
public const int DEFAULT_POP_UP_HEIGHT = 525;
}
internal static class CookieReader
{
private const int INTERNET_COOKIE_HTTPONLY = 0x00002000;
[DllImport("wininet.dll", SetLastError = true)]
private static extern bool InternetGetCookieEx(
string url,
string cookieName,
StringBuilder cookieData,
ref int size,
int flags,
IntPtr pReserved);
public static string GetCookie(string url)
{
int size = 512;
StringBuilder sb = new StringBuilder(size);
if (!InternetGetCookieEx(url, null, sb, ref size, INTERNET_COOKIE_HTTPONLY, IntPtr.Zero))
{
if (size < 0)
{
return null;
}
sb = new StringBuilder(size);
if (!InternetGetCookieEx(url, null, sb, ref size, INTERNET_COOKIE_HTTPONLY, IntPtr.Zero))
{
return null;
}
}
return sb.ToString();
}
}
}
Thank You.




2438E947EF
ReplyDeleteInstagram Takipçi Hilesi
Tiktok Ücretsiz Takipçi
Twitter Ücretsiz Beğeni
Facebook Ücretsiz Beğeni
SoundCloud Ücretsiz Beğeni
Threads Takipçi Hilesi
Threads Ücretsiz Takipçi
Instagram Hikaye Görme
PUBG Mobile Uc Hilesi