zoukankan      html  css  js  c++  java
  • .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();
            }
    

      

  • 相关阅读:
    Windows Message ID 常量列表大全
    C#中Thread与ThreadPool的比较
    HTML元素隐藏和显示
    Metrics.net + influxdb + grafana 构建WebAPI的自动化监控和预警
    Windbg DUMP分析(原创汇总)
    计算密集型分布式内存存储和运算平台架构
    从.net到java,从基础架构到解决方案。
    C# 泛型集合
    你该怎么选Offer
    C++ 虚拟桌面
  • 原文地址:https://www.cnblogs.com/hongshao/p/10606122.html
Copyright © 2011-2022 走看看