EAS webservice串用户、串数据中心问题
一些刚开始进行webservice开发的用户,往往会碰到串用户、串数据中心的问题。相关问题表现为webservice切换用户、数据中心后登陆,但实际登陆的用户还在切换前的用户、数据中心。导致系统会报诸如 没有权限、未找到用户之类的报错,或者导入的数据不正确。
? ?相关问题为未启用安全模式,系统调用前面的登陆返回信息引起。解决办法就是启用webservice安全模式。启用安全模式参考附件文档。 如何安全性启用 一、修改easServereasserverprofilesserver1configwebservice.propetties文件 ? ? isRomoteLocate=false ? 二、修改参数后,webservice调用端需要把登录返回的session传过去, java调用示例如下,其它语言调用参考 ?EASLoginProxy ?proxy =null;? ?WSContext context = null; ? ? try { ? ? //登录 ? ? proxy = new EASLoginProxyServiceLocator().getEASLogin(); ? ? context= proxy.login("kdjgf","","eas","zs70sp5","l2",1); ? ? //具体业务调用 ? ? String[][] vouchers= null; ? WSGLWebServiceFacadeSrvProxy proxyWS= null; ? ?proxyWS = new WSGLWebServiceFacadeSrvProxyServiceLocator().getWSGLWebServiceFacade(); ? ? //设置登录返回的session在soap头 ? ? ((Stub) proxyWS).setHeader("http://login.webservice.bos.kingdee.com","SessionId",context.getSessionId()); ? ?vouchers = proxyWS.getVoucher("001","2008","5",0); ? ?} catch (ServiceException e) { ? ? ?e.printStackTrace(); ? ?} catch (RemoteException e) { ? ? ?e.printStackTrace(); ? ?} .net 语言调用: 对于net代码,k2可参考http://blog.sina.com.cn/s/blog_567100f90101a0py.html进行修改(不能直接用,这里用了ChildElement,多了一级,修改要去掉这一级) 目前是同事使用.net语言封装了报文,并封装成.dll文件,供大家使用,具体如下: 调用方法如下:
???????static void Main(string[] args) ???????{ ??????????? string baseUrl =EasyConfig.UserData.GetNodeText("eas_services_url"); ??????????? var setting =EasyConfig.UserData.GetDict(EasyConfig.UserData.GetNodeText("eas_env")); ??????????? //前面代码是获取登录配置信息 ??????????? var voucherService = newEASVoucherLib.VoucherService( ??????????????? baseUrl,? //服务器url:http://10.2.1.144:6888/ormrpc/services,就是把后面具体的登录或导入凭证service前面公共的部分 ???????????????setting["userName"],? //下面参数参考调用登录EASLogin方法的参数 ???????????????setting["password"], ??????????????? setting["slnName"], ??????????????? setting["dcName"], ??????????????? setting["language"], ???????????????Convert.ToInt32(setting["dbType"])); ??????????? var voucherArr = newEASVoucherLib.WSWSVoucher[2]; ??????????? //...构造凭证对象 ? ??????????? //调用方法1 ??????????? using (voucherService) ??????????? { ???????????????voucherService.ImportVoucher(voucherArr,0); ??????????? } ??????????? //调用方法2 ??????????? try ??????????? { ??????????????? voucherService.ImportVoucher(voucherArr,0); ??????????? } ??????????? finally ??????????? { ??????????????? //必须调用Dispose方法执行logout退出登录 ??????????????? voucherService.Dispose(); ??????????? } ???????} 如需封装文件,请单独联系我,这个文件上传不了,请知晓! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |