当前位置 : 主页 > 网页制作 > Nodejs >

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

来源:互联网 收集:自由互联 发布时间:2021-06-24
一些刚开始进行webservice开发的用户,往往会碰到串用户、串数据中心的问题。相关问题表现为webservice切换用户、数据中心后登陆,但实际登陆的用户还在切换前的用户、数据中心。导
一些刚开始进行webservice开发的用户,往往会碰到串用户、串数据中心的问题。相关问题表现为webservice切换用户、数据中心后登陆,但实际登陆的用户还在切换前的用户、数据中心。导致系统会报诸如 没有权限、未找到用户之类的报错,或者导入的数据不正确。
   相关问题为未启用安全模式,系统调用前面的登陆返回信息引起。解决办法就是启用webservice安全模式。启用安全模式参考附件文档。


如何安全性启用


一、修改eas\Server\eas\server\profiles\server1\config\webservice.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, 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, 0, 0);

            }

            //调用方法2

            try

            {

                voucherService.ImportVoucher(voucherArr,0, 0, 0);

            }

            finally

            {

                //必须调用Dispose方法执行logout退出登录

                voucherService.Dispose();

            }

       }


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

网友评论