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尝试调用。确保接口可以正常调通后,再实现调用代码。

二.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/

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/

3.在SoapUI软件中配置Axis1.X
1.选择Tools -> Axis 1.X Artifacts

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

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

4.在SoapUI软件中调试WSDL接口
1.创建一个SOAP项目,输入项目名和接口地址

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

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

4.调试接口。选中Request窗口,点击窗口左上角的绿色三角按钮发起请求,查看窗口右侧返回信息,正常即可。
P.S.
① 如果接口需要账号密码认证,需要在左下角的窗口中填入账号和密码;
② 部分SAP接口在内网和外网请求的地址不同,需要确认请求地址,并修改Request请求的URL地址。

5.自动生成Java客户端调用代码
1.在SoapUI软件中点击选中接口,右键 -> Genarate Code -> Axis 1.x Artifacts

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

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

4.将生成的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可以极大的简化开发,在使用一次后就可以很快上手。
————————————————
版权声明:本文为CSDN博主「林特皮」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/petor_lin/article/details/126690470

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容