JAVA客户端调用SAP提供的接口(保姆级教程)

目前接触到SAP提供了两种不同的接口,对应也有两种不同的调用方式:1.Restful接口,支持直接通过post请求调用;2.WSDL接口,需要使用SoapUI测试并生成代码调用。大家在对接前要先确认接口调用属于哪种方式,避免浪费时间。

一.WSDL/REST接口

1.构建认证请求头

一般SAP提供的接口都需要账号密码验证,所以第一步根据提供的账号(username)和密码(password)生成认证请求头。

	// 设置-授权信息
	HttpHeaders headers = new HttpHeaders();
	String basicStr = "Basic " + Base64.encodeBase64String((username + ":" + password).getBytes());
	headers.add("Authorization", basicStr);

2.组装请求参数

根据SAP提供的接口文档组装请求参数。这里可以使用map,也可以使用对象,建议使用对象,字段加上注释,养成良好的习惯。
P.S.
①组装的对象注意转换成JSON
②SAP接口的字段是严格区分大小写的,以接口文档为准。

	String request = JSONUtil.toJsonStr(data);

3.将请求参数和请求头放到请求体中

	HttpEntity formEntity = new HttpEntity(request, headers);

4.使用http工具类请求接口

我个人习惯用的是RestTemplat,大家可以随意使用自己喜欢的http工具类。

	String response = restTemplate.postForObject(url, formEntity, String.class);

5.小结

可以直接通过post请求的接口调用非常简单。大家调试的时候,也可以先生成认证头,直接通过postman或者apifox尝试调用。确保接口可以正常调通后,再实现调用代码。

Apifox认证头截图

二.WSDL/SOAP接口

WSDL/SOAP接口调用相对比较麻烦,需要用到SoapUI软件和axis。好在可以通过SoapUI软件自动生成接口调用生成代码,节省了很多时间。

1.下载SoapUI软件

SoapUI是一个开源测试工具,通过soap/http来检查、调用、实现Web Service的功能/负载/符合性测试。
看下图,左边的是收费的,有14天的免费使用。建议直接选择右边的免费开源版本下载,安装过程全称傻瓜化,这里就不赘述了。

官网:https://www.soapui.org/
官方下载页面:https://www.soapui.org/downloads/soapui/
SoapUI官方软件下载页面

2.下载Axis

Axis全称Apache Extensible Interaction System 即阿帕奇可扩展交互系统。Axis本质上就是一个SOAP引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。目前axis已推出axis2,有兴趣可以自行了解使用。

1.我用的是axis 1.4的版本,进入axis 1.4下载页面后,按下图选择对应的压缩包下载。
2.将压缩包解压到任意目录下,注意不要包含中文。

Apache Axis:https://axis.apache.org/axis/
Apache Axis 1.4 下载页面:https://archive.apache.org/dist/ws/axis/1_4/
axis 1.4 下载页面

3.在SoapUI软件中配置Axis1.X

1.选择Tools -> Axis 1.X Artifacts

SoapUI软件Tools菜单

2.在弹出的窗口中点击右下角的Tools按钮

Axis 1.X 配置窗口

3.将刚刚下载解压的axis文件路径配置在下图所示位置,点击OK

SoapUI软件配置页面

4.在SoapUI软件中调试WSDL接口

1.创建一个SOAP项目,输入项目名和接口地址

创建SOAP项目

2.如果接口需要账号密码认证,在弹窗中输入

账号密码输入窗口

3.点击OK后生成以下项目结构,代表接口正常

项目结构

4.调试接口。选中Request窗口,点击窗口左上角的绿色三角按钮发起请求,查看窗口右侧返回信息,正常即可。

P.S.
① 如果接口需要账号密码认证,需要在左下角的窗口中填入账号和密码;
② 部分SAP接口在内网和外网请求的地址不同,需要确认请求地址,并修改Request请求的URL地址。
发起请求

5.自动生成Java客户端调用代码

1.在SoapUI软件中点击选中接口,右键 -> Genarate Code -> Axis 1.x Artifacts

生成代码

2.在弹出的窗口中,选中生成的Java文件路径

选中生成的Java文件路径

3.生成Java代码成功实例图

生成Java代码成功实例图

4.将生成的Java文件拷贝到项目中

生成的Java文件

6.调用生成的类和方法

Java客户端调用接口代码已经自动生成,但是使用前还有2个地方需要调整。

1.引入axis-1.4的依赖

	<dependency>
		<groupId>axis</groupId>
		<artifactId>axis</artifactId>
		<version>1.4</version>
	</dependency>

2.在生成的代码中设置账号和密码

自动生成的Java文件中有一个以Stub结尾的Java文件,找到createCall()这行代码的位置,设置账号和密码的值。

	org.apache.axis.client.Call _call = createCall();
	_call.setUsername(username);
	_call.setPassword(password);

3.组装data请求参数,调用对应的locator类的getHTTP_Port()方法获取远程调用接口,直接调用接口内的方法即可

	XXXServiceLocator locator = new XXXServiceLocator();
	XXX xxx = locator.getHTTP_Port();
	ResponseDataItems[] responseDataItems = xxx.XXX(data);

7.小结

WSDL/SOAP接口的调用,对于初次接触的人来说相对比较麻烦。但其实总结起来只需要三步:1.先用SoapUI工具调通接口;2.结合axis自动生成客户端代码;3.调用生成的类和方法。

三.总结

1.WSDL/REST接口调用就是Restful风格的HTTP请求,比较简单,只需要注意生成认证头即可;
2.WSDL/SOAP接口的调用相对比较麻烦,但是可以通过使用SoapUI工具+Axis可以极大的简化开发,在使用一次后就可以很快上手。

  • 9
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
调用 SAP 的 RFC 接口,需要使用 SAP 提供Java Connector(SAP JCo)库。在使用 SAP JCo 调用 RFC 接口时,需要在 SAP JCo 的配置文件中设置系统 ID(System ID),以便正确地连接到 SAP 系统。 要配置 SAP JCo 的系统 ID,需要进行以下步骤: 1. 打开 SAP JCo 的配置文件 sapjco3.properties,该文件通常位于应用程序的 classpath 下。 2. 在 sapjco3.properties 文件中添加以下配置项: ``` jco.client.sysnr=<系统编号> jco.client.client=<客户端> jco.client.user=<用户名> jco.client.passwd=<密码> jco.client.lang=<语言> jco.client.ashost=<应用服务器主机名> jco.client.saprouter=<SAP 路由器> ``` 其中,<系统编号> 是 SAP 系统的编号,<客户端> 是 SAP 客户端的编号,<用户名> 和 <密码> 是 SAP 用户的登录信息,<语言> 是登录时使用的语言代码,<应用服务器主机名> 是 SAP 应用服务器的主机名,<SAP 路由器> 是可选的 SAP 路由器配置。 3. 在 Java 代码中使用 SAP JCo 的 API 调用 RFC 接口时,可以使用以下代码获取 SAP JCo 的配置信息: ``` JCoDestination destination = JCoDestinationManager.getDestination("<destination>"); ``` 其中,<destination> 是 SAP JCo 的目标名称,可以在 sapjco3.properties 文件中配置。 4. 使用 SAP JCo 的 API 调用 RFC 接口时,需要使用 SAP JCo 的函数模块名称和函数模块的输入参数,例如: ``` JCoFunction function = destination.getRepository().getFunction("<function_module>"); if (function == null) { throw new RuntimeException("<function_module> not found in SAP system."); } function.getImportParameterList().setValue("<parameter_name>", "<parameter_value>"); function.execute(destination); ``` 其中,<function_module> 是 SAP RFC 函数模块的名称,<parameter_name> 和 <parameter_value> 是函数模块的输入参数名称和值。 以上是 Java 调用 SAP RFC 接口时配置系统 ID 的基本步骤。具体的配置和调用方法可能会因不同的 SAP 系统和 RFC 接口而有所不同,需要根据实际情况进行调整和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值