加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

EAS webservice串用户、串数据中心问题

发布时间:2020-12-16 22:01:55 所属栏目:安全 来源:网络整理
导读:一些刚开始进行webservice开发的用户,往往会碰到串用户、串数据中心的问题。相关问题表现为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();

??????????? }

???????}


如需封装文件,请单独联系我,这个文件上传不了,请知晓!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读