https://www.jianshu.com/p/63956df1775b
原理: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,哈哈。
作者:浮雲騎士_
鏈接:https://www.jianshu.com/p/63956df1775b
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。