• SkyDrive APIs之——操作文件和文件夹(3)


    上一篇我们搭建好了SkyDrive APIs调用的环境。详细地址:SkyDrive APIs——用户登录和APP授权(2)

    本篇主要实现文件和文件夹的读取和操作。

    在上一篇中我们完成APP实现用户的登录和完成相关Scope(权限)的授权。当经过了这两步骤的必须操作之后, 我们就可以实现对这“云端网盘”的远端操纵了。

    首先,来看看LiveConnectClient类的成员:

                         

    上图是这个类的全部成员了。 下面对其分部讲解

    第①:Session字段,构造函数需要这个字段来完成对LiveConnectClient类的实例构造。这个Session对象如何来呢?  在上一篇中的SessionChanged事件中,如果

    e.Status == LiveConnectSessionStatus.Connected 那么我们就可以拿这个事件参数来完成实例构造了:LiveConnectClient liveClient = new LiveConnectClient(e.Session);

    第②:回调事件。

    第③:这是这个类的所有公开的操作方法。 单从字面上其实就很一目了然了,覆盖了获取、下载、上传、更新、删除、移动、赋值。不得不说微软已经把事情封装到这份上了,还有什么好说的,直接拿去用吧,连基础的HTTP请求都免了。结合②中注册回调事件,调用方法,可以搞定收工了。你会写吗——So easy!

    不过, 等等。 注意到有个地方没有讲到。那就是参数部分。 上图的所有方法都带有string类型的path,那么,这个参数到底该传什么内容进去呢?

    这里就要用到REST的相关概念了。

    定义和概念我就不说了,也表达不出什么好的概念,直接上维基百科找:http://zh.wikipedia.org/wiki/REST

    一句话的理解说:就是使用HTTP协议,请求REST的路径,然后解析返回来的json对象,转换成对象实体或集合,然后进行数据绑定,整个过程就是这样了。

    来段代码:

    Var liveClient = new LiveConnectClient(e.Session);	//实例化对象
                        liveClient.GetCompleted += new EventHandler<LiveOperationCompletedEventArgs>(liveClient_GetCompleted);  //注册回调事件
                    liveClient.GetAsync("/me");	//调用异步方法,请求用户基本资料
    
            void liveClient_GetCompleted(object sender, LiveOperationCompletedEventArgs e)
            {
                if (e.Error == null)
                {
                    JsonManager.Default.ResolveFolder(e.RawResult); //处理json
                    foreach (var key in e.Result.Keys)
                    {
                        var result = e.Result[key];
                    }
    
                    string first_name = string.Empty;
                    string last_name = string.Empty;
                    if (e.Result.ContainsKey("first_name"))
                    {
                        first_name = (string)e.Result["first_name"];
                    }
                    if (e.Result.ContainsKey("last_name"))
                    {
                        last_name = (string)e.Result["last_name"];
                    }
                    infoText.Text = string.Format("Welcome, {0} {1}", first_name, last_name);
                }
                else
                {
                    infoText.Text = "Get a error for call apis." + e.Error.Message;
                }
            }
    

      

    这里有全部详细的REST请求路径和返回的JSON字符串 请参考:http://msdn.microsoft.com/en-us/library/live/hh243648.aspx#top

    如果要获取用户基本信息,需要用户授予的权限scope是”wl.basic”;需要请求的REST路径是”/me”,即可。

    如果要获取用户全部相册目录,需要用户授予的权限scope是"wl.signin","wl.basic","wl.photos"

    ”;需要请求的REST路径是” /me/albums”这些都可以对号入座的。

    所有的理论概念,讲到这里其实都差不多了。 我在这里只是抛砖引玉,因为很多东西都只是隔着一纸纱糊,捅破了其实很简单,只是因为繁琐碎。希望能对你有帮助。

    下篇开始,我将会使用MVVM模式一步步打造SkyDrive For Windows Phone APP.敬请关注。

    Man propose,God disposes!
  • 相关阅读:
    用cascade删除有约束的表或记录
    易混淆的Window窗体与父窗体之间位置关系
    界面主窗体,子窗体的InitializeComponent(构造函数)、Load事件执行顺序
    DEV CheckComboboxEdit、CheckedListBoxControl(转)
    程序实现DataGrid过滤设置
    创建触发器的基本语法
    查看dll中的函数(方法)
    delphi xe2 64位嵌入汇编问题 https://bbs.csdn.net/topics/390333981
    USB转换PS2接线原理
    Win8.1+VS2013+WDK8.1+VirtualBox or VMware 驱动开发环境配置
  • 原文地址:https://www.cnblogs.com/mehale/p/2532937.html
Copyright © 2020-2023  润新知