Невозможно загрузить Office 365 SharePoint Библиотека
Вопрос
Я пытаюсь загрузить пункт, который существует в офисе 365 библиотеки SharePoint с использованием WebcClient.DownloadFile()
, но я получаю это исключение:
Исключение:
The remote server returned an error: (403) Forbidden.
.
Образец кода:
NetworkCredential credential = new NetworkCredential("username", "password", "aaa.onmicrosoft.com");
WebClient webClient = new WebClient();
webClient.Credentials = credential;
webClient.DownloadFile(@"https://aaa.sharepoint.com/testDoc/test.pdf", @"c:/test.pdf");
. Решение
с небольшим количеством помощи от моих друзей, мне удалось взломать этот файл SharePoint онлайн-аутентификации :)
Я был любезно указан в направлении этот блог пост из WiCtor Wilén.
и мой WebClient Call, который использует WICTORS, утверждает, что библиотечный код ...
var claimsHelper = new MsOnlineClaimsHelper(sharepointOnlineUrl, username, password);
var client = new WebClient();
client.Headers[ "Accept" ] = "/";
client.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
client.Headers.Add(HttpRequestHeader.Cookie, claimsHelper.CookieContainer.GetCookieHeader(new Uri(sharepointOnlineUrl)) );
var document = client.DownloadString( documentUrl );
. Другие советы
Другой вариант будет использовать CarePointonLineCrecredials Class href="http://www.microsoft.com/en-us/download/details.aspx?id=42038"> SharePoint онлайн клиентские компоненты SDK SDK .
SharePointonLineCredentials Class представляет объект, который предоставляет учетные данные для доступа к SharePointОнлайн ресурсы
Предварительные условия
SharePoint Online Colent Components SDK
Как скачать файл из SharePoint Online
public static void DownloadFile(string userName, string password, string fileUrl, string filePath)
{
var securePassword = new SecureString();
foreach (var c in password)
{
securePassword.AppendChar(c);
}
using (var client = new WebClient())
{
client.Credentials = new SharePointOnlineCredentials(userName, securePassword);
client.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
client.DownloadFile(fileUrl, filePath);
}
}
.
public static void DownloadFile(string userName, string password, string fileUrl, string filePath)
{
var securePassword = new SecureString();
foreach (var c in password)
{
securePassword.AppendChar(c);
}
using (var client = new WebClient())
{
client.Credentials = new SharePointOnlineCredentials(userName, securePassword);
client.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
client.DownloadFile(fileUrl, filePath);
}
}
Вам нужно добавить немного, чтобы избавиться от вашей проблемы, называемые заголовками и пользовательским соглашением.
public static void method()
{
// NetworkCredential myCredentials = new NetworkCredential("username", "password", "aaa.onmicrosoft.com");
WebClient w = new WebClient();
var ua = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
w.Headers["Accept"] = "/";
w.Headers.Add(HttpRequestHeader.UserAgent, ua);
w.Credentials = myCredentials;
w.DownloadFile(url, @"c:/name.doc");
}
.
Это загружает файл для меня из библиотеки TeamSite в Office 365. Но это дает мне загруженный файл.Только проблема, которую я покинул: файл не содержит реальной информации, которую вы хотите скачать.Я пытаюсь решить эту проблему уже несколько дней - и это лучший результат, который я дошел до сих пор. Может быть, вы могли бы помочь мне на этом с этой новой информацией. Дайте мне знать, пожалуйста :)