登陆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 开发六)
C# 调用SAP PO中间件的WebService接口(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的一个原因吧:程序自动产生的东西,不容易出错,开发起来效率更高。
本文介绍如何使用C#和REST JSON协议与SAPPO中间件进行交互,具体包括搭建开发环境、发起查询请求及接收返回数据的过程。
2047





