2017-07-28 47 views
0

我目前正在開發基於Sharepoint REST API和Microsoft Graph的應用程序。我的應用程序主要由選項卡式頁面組成,在第一個選項卡上我想顯示來自SharePoint的新聞。要做到這一點,我想從新聞中獲取圖片,但將圖片的網址作爲圖片源返回給我「禁止」的錯誤。所以,我決定找到一種方法來下載這些圖像。我一直在尋找幾天的方式,並沒有發現任何東西...從sharepoint下載並顯示圖像(Xamarin.Forms PCL)

有沒有人知道一種方法來做到這一點,或爲什麼我有一個禁止訪問錯誤?

我帶來一定的精度,我使用的是HttpClient的認證與REST API租戶:

client = new HttpClient(); 
Uri mUri = new Uri(App.ReturnUri); 
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
var data = await DependencyService.Get<IAuthenticator>() 
         .Authenticate(App.LoginAuthority, App.RestResourceUri, App.ClientId, mUri); 
App.AuthenticationResult = data; 
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", App.AuthenticationResult.AccessToken); 

從這一點,我希望有人知道,如果有一種方法來下載圖片或訪問到url以便將它們用作Source。我成功地獲取網址,但不顯示圖像,知道我可以從SharePoint檢索任何其它數據

感謝您的幫助,

回答

0

Image組件可以使用URL作爲它的數據,但需要AREN圖片不在身份驗證之後,這可能就是您的SharePoint映像的情況。這也是爲什麼它會返回一個Forbidden錯誤。

var webImage = new Image { Aspect = Aspect.AspectFit }; 
webImage.Source = ImageSource.FromUri(new Uri("https://xamarin.com/content/images/pages/forms/example-app.png")); 

要添加的SharePoint,你很可能是能夠實現自己的UriImageSource實施驗證層。最後,ImageSource只需要一個Stream對象,因此無論是從互聯網還是本地存儲都可以工作。

要下載和存儲圖像,您必須專門編寫兩種平臺的代碼,因爲本地存儲的工作方式不同。看看這篇博客帖子,結合你自己的一段代碼。

https://blog.falafel.com/xamarin-forms-storing-and-retrieving-photos/

+0

是的,這是一種方式。我使用PCLStorage存儲數據,我設法從共享點獲取數據到設備中,但尚未獲取圖像。我很確定我錯過了一些關於我的HttpClient的需求,而不是「經典」數據。 – Inglorious