日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SharePoint 2013 APP 开发示例 (六)服务端跨域访问 Web Service (REST API)

發布時間:2025/3/13 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SharePoint 2013 APP 开发示例 (六)服务端跨域访问 Web Service (REST API) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上個示例(SharePoint 2013 APP 開發示例 (五)跨域訪問 Web Service (REST API))是基于JavaScript,運行在web browser內去訪問REST API;在這個示例里,我們將用服務端代碼創建同樣的功能,我們將用到TokenHelper和HTTPWebRequest 對象。

? 項目模板里的TokenHelper.cs 文件被用作管理Token
? HttpWebRequest 對象被用來格式化和發送請求
? HttpWebResponse 對象用于解釋來自REST API的響應

我們將同樣的創建一個 auto-hosted app 和 ASP.NET 控件,然后我們將添加服務端的代碼去請求REST并顯示結果。
1. 打開Visual Studio 2012.
2. 創建一個新的SharePoint 2013 app.
3. 選擇auto-hosted .
4. 打開Default.aspx (Pages 文件夾).
5. 替換<form>里的內容:

<asp:HiddenField ID="SPAppToken" runat="server" /><div> <table><tr><td>REST Path:</td><td><asp:TextBox ID="txtREST" runat="server" Width="700">/_api/web/lists</asp:TextBox></td></tr><tr><td>Format:</td><td><asp:DropDownList ID="ddlFormat" runat="server"><asp:ListItem Value="application/json;odata=verbose">application/json;odata=verbose</asp:ListItem><asp:ListItem Value="application/atom-xml">application/atom-xml</asp:ListItem></asp:DropDownList></td></tr></table><asp:Button ID="cmdRunRequest" runat="server" Text="Execute the REST Request" OnClick="cmdRunRequest_Click" /></div><h2><asp:Label ID="lblStatus" runat="server" Text=""></asp:Label></h2><asp:Label ID="lblOutput" runat="server" Text=""></asp:Label>

跟上個示例一樣的UI,不同的是這里用的是ASP.NET 服務端控件,點擊按鈕后將引起ASP.NET postback 發生。

<asp:HiddenField ID="SPAppToken" runat="server" />
這是個隱藏字段,它包含這個頁面的 context token ,我們加入這個字段是因為當postback發生時我們調用SharePoint時要用到它。另一種方法是,我們可以把context token放到 session 里,這就看你怎么平衡了,放到session里,可能會引起擴展性的問題;如果頁面沒有用到SSL,這時把它放到頁面里可能會被攔截。本例的頁面將要用到SSL,所以把token放到頁面上是合適的。實際上這個token是以同樣的方式post回來的。
6. 保存 Default.aspx.
7. 打開 Default.aspx.cs .
8. 加入下面的引用:
using System.Net; using System.IO;

9. 加入下面代碼到Page_Load 里,這段代碼為form提供了context token.

if (!IsPostBack)SPAppToken.Value = TokenHelper.GetContextTokenFromRequest(Request);

10. 為按鈕添加click事件:

protected void cmdRunRequest_Click(object sender, EventArgs e){// For testing only!// Remove this line before releasing to production.TokenHelper.TrustAllCertificates();Uri appWebUrl = new Uri(Request.QueryString["SPAppWebUrl"]);// The context token is retreived from the SPAppToken field // in TokenHelper.GetContextTokenFromRequest().SharePointContextToken contextToken =TokenHelper.ReadAndValidateContextToken(TokenHelper.GetContextTokenFromRequest(Request),Request.Url.Authority);string accessToken =TokenHelper.GetAccessToken(contextToken, appWebUrl.Authority).AccessToken;HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(Request.QueryString["SPAppWebUrl"] + txtREST.Text);req.Method = "GET";req.Accept = ddlFormat.SelectedValue;req.Headers.Add("Authorization", "Bearer " + accessToken);HttpWebResponse resp = (HttpWebResponse)req.GetResponse();lblStatus.Text = resp.StatusDescription;StreamReader st = new StreamReader(resp.GetResponseStream());lblOutput.Text = WebUtility.HtmlEncode(st.ReadToEnd());}

11. 保存Default.aspx.cs .

這段代碼用一系列的步驟去請求REST,首先,獲得 context token ,然后通過調用Windows Azure里的 Access Control Service生成access token:

SharePointContextToken contextToken =TokenHelper.ReadAndValidateContextToken(TokenHelper.GetContextTokenFromRequest(Request),Request.Url.Authority);string accessToken =TokenHelper.GetAccessToken(contextToken, appWebUrl.Authority).AccessToken;

接著,用URL和要求的header信息創建請求對象,注意把通過ACS生成的access token加到授權header里了。

HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(Request.QueryString["SPAppWebUrl"] + txtREST.Text);req.Method = "GET";req.Accept = ddlFormat.SelectedValue;req.Headers.Add("Authorization", "Bearer " + accessToken);


最后,執行這個請求獲得響應:

HttpWebResponse resp = (HttpWebResponse)req.GetResponse();lblStatus.Text = resp.StatusDescription;StreamReader st = new StreamReader(resp.GetResponseStream());lblOutput.Text = WebUtility.HtmlEncode(st.ReadToEnd());

就像我們在上個示例看到的一樣,如果現在去run solution,會報錯,因為沒有app web,為了強制創建一個最小的app web, 我們還是加一個空的element 文件到項目里。
12. 右擊app項目.

13. 選擇 Add ? New Item….
14. 從Office/SharePoint里選擇Empty Element,接著點擊Add,至于文件名不重要,隨便填。

15. 按F5 debug.
結果跟上個示例一樣,不同的是在本例中,點擊按鈕引起browser去發送一個新的請求到服務器端web browser,然后返回整個頁面,客戶端的web browser沒有任何邏輯。

?

SharePoint 2013 APP 開發示例 系列

轉載于:https://www.cnblogs.com/fengwenit/p/3558359.html

總結

以上是生活随笔為你收集整理的SharePoint 2013 APP 开发示例 (六)服务端跨域访问 Web Service (REST API)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。