Sap系统的rfc函数封装的webservice接口如何用JAVA代码调用

一、过程中踩的坑

1、传统的webservice调用方式会报错,none policy等

sap提供的wsdl不是普通的以?wsdl结尾的链接,而是一个结构类似于下面这个链接的格式http://*******.com:8001/sap/bc/srt/wsdl/flv_10002A111AD1/bndg_url/sap/bc/srt/rfc/sap/yws_get_str/200/yws_get_str/yws_get_str?sap-client=200(网上随便找的)

2、使用java自带的编译器可以很简单帮你生成该wsdl文档下的java框架。原理很简单,wsdl包括了接口文档信息,只要把wsdl的文件给wsimport就可以生成java文件

    a、在java安装环境下找到jdk的bin目录下有一个wsimport.exe的工具,

    b、使用该工具可以根据wsdl地址生成java的客户端代码。在CMD中键入命令如下:

        wsimport -d E:\data\soap -keep -verbose -Xauthfile E:\data\soap\11.txt http://XXXXXXX

  命令参数说明:

  -d: 生成客户端执行类的class文件的存放目录

  -s: 生成客户端执行类的源文件的存放目录

        -p: 定义生成类的包名

-         http://XXXXXXX:为sap生成WSDL的URL

        其中11.txt里填写wsdl地址:http://账号:密码@XXXXXXX

        (在java环境下创建了一个名为TestClient的java project,找到TestClient磁盘路径,在src下新建11.txt文件)

        CMD我键入的命令为:wsimport -d D:\eclipse-workspace\Testclient\src -keep -verbose -Xauthfile D:\eclipse-workspace\Testclient\src\11.txt http://xxxxxxx
参考原文链接:https://blog.csdn.net/willieyuan/article/details/103995609

这种方法确实生成了几个可用文件,但无法成功调用

二、成功调用

ClosableHttpClient httpClient = HttpClients.createDefault();

HttpPost httpPost = new HttpPost(url)

//xml为访问时的参数,但是要传xml格式

httpPost.setEntity(new StringEntity("xml"))

ClosableHttpResponse response = httpClient.excute(httpPost)

HttpEntity entity=response.getEntity();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
调用 SAPRFC 接口,需要使用 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 接口而有所不同,需要根据实际情况进行调整和修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值