• .net(c#) 简单调用SAP byd OData 服务


    .net Odata 插件

    OData Connected Service

    https://marketplace.visualstudio.com/items?itemName=laylaliu.ODataConnectedService#review-details

    OData v4 Client Code Generator

    https://marketplace.visualstudio.com/items?itemName=bingl.ODatav4ClientCodeGenerator

    1.在Byd中建立自定义 OData服务

    image

    image

    image

    服务名称要用英文开头 不包含特殊字符,不然会报错,保存

    2.设置OData服务内容

    image

    工作中心视图用于设置整体服务的权限,也可以不设置,然后在实体对象中明细设置对象权限

    image

    选择业务对象.并创建对应实体类型

    image

    导入功能中,设置功能类型和参数

    image

    保存并激活

    image

    打开 服务 URL 并保存为 接口配置.XML

    image

    测试接口

    image

     

    3.在VS 2015中使用

    添加服务引用

    image

    地址可以选择保存的 接口配置.XML 也可以直接使用URL(需要用Byd 用户登陆)

    image

    点确定就可以了

    4.在VS 2017中使用

    添加链接的服务

    image

    选择插件,没安装的需要安装

    image

    选择导出的 接口配置.xml  (不支持URL登陆)

    image

     

    5.Codeing

            static  void Main(string[] args)
            {
                var url = "https://my600301.sapbyd.cn/sap/byd/odata/cust/v1/odatacardtest";
                odatacardtest odata = new odatacardtest(new Uri(url))
                {
                    //认证信息
                    Credentials = new NetworkCredential("zh3305", "*******")
                };
                //执行查询 where 会自动转换成ABAP查询语句.支持常见查询语句转换 Contains StartsWith EndWith == 等等常用语句
                var cardRoots = odata.TCardRootCollection.Where(t => t.CarParkName.Contains("2")).ToList();
                Console.WriteLine(JsonConvert.SerializeObject(cardRoots));
                Console.ReadKey();
            }
        }
     
    //.net Core 
     static async Task Main(string[] args)
            {
                var url = "https://my600301.sapbyd.cn/sap/byd/odata/cust/v1/odatacardtest";
                odatacardtest odata = new odatacardtest(new Uri(url))
                {
                    //认证信息
                    Credentials = new NetworkCredential("zh3305", "**********")
                };
                var query = (DataServiceQuery<TCardRoot>)(from cust in odata.TCardRootCollection
                                                          where cust.CarParkName == "2"
                                                          select cust);
                // 必须改为调用 BeginExecute 和 EndExecute 方法。
                query.BeginExecute(ar =>
                {
                    if (ar.AsyncState is DataServiceQuery<TCardRoot> peopleQuery)
                    {
                        var people = peopleQuery.EndExecute(ar).ToArray();
                        foreach (var p in people)
                        {
                            Console.WriteLine(p.CarParkName);
                        }
                        Console.WriteLine(JsonConvert.SerializeObject(people));
                    }
                }, query);
                Console.ReadKey();
            }
    

      

  • 相关阅读:
    解决VMwave下卡死的办法
    深度探索C++对象模型第四章:函数语义学
    cc
    tbb库的使用
    10内核同步方法
    哈希
    django 和restful framework 初始配置轻松搞定
    linux有趣动画--代码雨
    linux有趣开机图标--佛祖保佑
    Socket是什么,通俗易懂点说
  • 原文地址:https://www.cnblogs.com/hongshao/p/10606122.html
Copyright © 2020-2023  润新知