原理:SAP通过发布WEBService,java代码去调用,从而控制sap的操作。这一方案可以将sap的业务拿到web或者Android中去。
首先SAP发布Webservice
http://jingyan.baidu.com/article/8275fc867c9e2946a13cf66c.html
这个教程很完整,第一次测试时可以完全按照步骤来操作。
这时我们可以看到sap webservice的wsdl文档。
注意,我们使用SOAMANAGER打开游览器是无法访问链接的,原因,域名解析不出来,
把生产的域名和ip地址绑定就ok,修改host文件。继续》》》
wsimport 生成java代码
由于java连接webservice代码很多,使用java自带的编译器可以很简单帮你生成该wsdl文档下的java框架。
原理很简单,wsdl包括了接口文档信息,只要把wsdl的文件给wsimport就可以生成java文件
http://blog.csdn.net/tianma630/article/details/8231224
但是。。。。我们运行后在终端报错了
[ERROR] 未找到授权文件 "/Users/developer/Desktop/auth2"。如果 WSDL 访问需要基本验证, 请在/Users/developer/.metro/auth中提供具有读取访问权限的授权文件, 或者使用 -Xauthfile 指定授权文件并在每一行上使用以下格式提供授权信息: http[s]://user:password@host:port//<url-path>
是因为我们访问sap的时候需要输入账号密码等权限。
好先帖教程
http://blog.csdn.net/dongjunwen/article/details/54890415
再贴代码
wsimport -keep -d /Users/developer/Desktop -s /Users/developer/Desktop -p com.map -verbose -Xauthfile /Users/developer/Desktop/test.txt http://ip:port/sap/bc/srt/wsdl/flv_10002A101AD1/bndg_url/sap/bc/srt/rfc/sap/zcs_ws001/200/zcs_ws001/zcs_ws001?sap-client=200
意思就是我要创建一个txt文件,按照http[s]://user:password@host:port//<url-path>的规则写入进去。然后通过命令行
wsimport -keep -d /Users/developer/Desktop -s /Users/developer/Desktop -p com.map -verbose -Xauthfile /Users/developer/Desktop/test.txt http://ip:port/sap/bc/srt/wsdl/flv_10002A101AD1/bndg_url/sap/bc/srt/rfc/sap/zcs_ws001/200/zcs_ws001/zcs_ws001?sap-client=200
我们把"-Xauthfile+文件路径"插入进去作文发送请求的标签一起发送,这个时候会把账号密码和地址一起发送请求来获得sap webservice的wsdl文件。
第二种就是使用idea自带的工具来生成代码
https://my.oschina.net/nba/blog/482117
好了,可以看到没有输入账号密码的地方,我们可以将wsdl下载下来保存为文档,然后通过idea导入生成,效果其实是一样的。
Main函数
两句代码搞定
ZCSWS001_Service mywebService = new ZCSWS001_Service();
System.out.println(mywebService.getZCSWS001().zceshi001(1,2));
好了 ,大工搞成,😔不对 又报错。
原因还是因为sap的wsdl需要用户登录才能访问。
完蛋。。。。
思索很久。嘿嘿,在网上找到办法了
http://blog.sina.com.cn/s/blog_3f2c03e30100ukg2.html
只需要在url中加入参数账户名和密码。
好了 我们定位到wsimport 生成的ZCSWS001_Service文件。
有一个静态方法,在里面修改url地址。
static {
URL url = null;
WebServiceException e = null;
try {
url = new URL("http://ip:port/sap/bc/srt/wsdl/flv_10002A101AD1/bndg_url/sap/bc/srt/rfc/sap/zcs_ws001/200/zcs_ws001/zcs_ws001?sap-client=200&sap-user=USERNAME&sap-password=PASSWORD");
} catch (MalformedURLException ex) {
e = new WebServiceException(ex);
}
ZCSWS001_WSDL_LOCATION = url;
ZCSWS001_EXCEPTION = e;
}
OK,
但是。。。完蛋,,,控制台说什么 ..com不可访问。
😑,其实就是wsdl里面默认还是用的是sap产生的域名,但是域名解析不出来了,将你sap的ip地址和此生产的域名做一个host文件映射就行了。
OK,继续运行,控制台生成3,哈哈。