C#使用REST JSON协议连接SAP PO(SAP PO 开发十)

本文介绍如何使用C#和REST JSON协议与SAPPO中间件进行交互,具体包括搭建开发环境、发起查询请求及接收返回数据的过程。

登陆PO服务器,启动JAVA客户端三步(SAP PO 开发一)

搭建一个WebService接口环境(SAP PO 开发 二)

用SAP PO连通一个WebService接口(SAP PO 开发 三)

ERP系统RFC协议发送端通过PO连通WebService接口(SAP PO 开发四)

我的第一个SAP PROXY ABAP Program(SAP PO 开发五)

SAP PO (Process Orchestration) 中间件接口管理平台(SAP PO 开发六)

接口开发技术概念与名词术语解释(SAP PO 开发七)

C# 调用SAP PO中间件的WebService接口(SAP PO 开发八)

理解REST2PROXY(SAP PO 开发九)

C#使用REST JSON协议连接SAP PO(SAP PO 开发十)​​​​​​​

 

对于WebService的SOAP协议,开发的组件成熟,调用简单,详情见:

C# 调用SAP PO中间件的WebService接口(SAP PO 开发八)

本文讲述对于REST架构JSON报文的接口调用,接口就是开发九中的用户权限查询JK0089接口,

C#程序使用REST协议接入SAP PO,SAP PO同ERP之间使用PROXY(XI)协议。接口实现C#程序发起查询,在ERP系统中查询到数据后,返回给C#程序。

 

VS2019新建WINFORM程序,NuGet下载安装2个组件RestSharp(Rest类库)、Newtonsoft.Json(JSON类库)。

DEMO的效果和代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using RestSharp;
using RestSharp.Authenticators;
using Newtonsoft.Json;

namespace RestSharp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                var client = new RestSharp.RestClient("http://podev.xxx.com:50000/");
                client.Authenticator = new HttpBasicAuthenticator("username", "password");

                var requestPost = new RestRequest("RESTAdapter/GetUser", Method.POST);
                Info info = new Info();
                info.UNAME = "刘";
                var json = JsonConvert.SerializeObject(info);

                requestPost.AddParameter("application/json", json, ParameterType.RequestBody);
                IRestResponse responsePost = client.Execute(requestPost);
                var contentPost = responsePost.Content;

                RETURNALL tmp = JsonConvert.DeserializeObject<RETURNALL>(contentPost);

                foreach (var one in tmp.RETURNTABLE)
                {
                    listBox1.Items.Add(one.NAME_TEXT+" : "+one.TCODE);
                }
            }
            catch (Exception ex)
            {
                listBox1.Items.Add( ex.Message + Environment.NewLine + ex.StackTrace);
            }
        }

   
     public class Info
     {
         public string UNAME { get; set; }
         public string TCODE { get; set; }
     }       
 
    public class RETURNALL
    {
         public List<one> RETURNTABLE { get; set; }
    }
  
    public class one
    {
        public string UNAME { get; set; }
        public string NAME_TEXT { get; set; }
        public string DEPARTMENT { get; set; }
        public string AGR_NAME { get; set; }
        public string TEXT { get; set; }
        public string TCODE { get; set; }
        public string TTEXT { get; set; }
    }

    }
}

输入的查询参数结构只有一层:

我们在代码中放到info对象中。

 

返回的数据结构需要说明一下,这个返回的结构应该是有3层:

如果你去准备一个对象来接返回的数据结构也应该有三层。

就这样,我们走JSON也很简单就完成了。对比SOAP来看,在开发组件上,JSON手动的内容比较多,而SOAP自动的功能多一些。比如SOAP有WSDL接口描述文件,可以全自动配置等等,所以这也是PO顾问愿意使用SOAP的一个原因吧:程序自动产生的东西,不容易出错,开发起来效率更高。

 

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘欣的博客

你将成为第一个打赏博主的人!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值