.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();
        }

  

转载于:https://www.cnblogs.com/hongshao/p/10606122.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值