Webservice EASLogin登录接口说明(本文章不再更新维护,请移步新文章)

由于运营调整,本文章不再更新维护,具体的接口说明请移步新文章
https://wenku.my7c.com/article/173164492883473920
请确认调用方用的端口是eas的具体实例端口还是群集端口,实例端口参照“安全模式”方案实施,群集端口一定要用“高可用webservice方案技术方案(连接集群端口)”方案。
由于网页排版问题,如果不全,详细信息请下载附件中文档查看 。
一,安全模式(只适用实例端口)注意:85版本以后实例端口不能是实例1
1)、启用安全模式。修改eas\Server\eas\server\profiles\server1~N\config\webservice.propetties文件,另起一行,添加参数如下:
isRomoteLocate=false (注意参数名和值不要写错,可直接复制过去)
是否启用成功测试方法(群集端口同用):
客户端set-url.bat 端口连接设置成与webserivce调用对应的实例或集群的端口一致,然后在查询分析器分步执行服务端脚本: com.kingdee.bos.webservice.WSConfig.init() --调用webservice.properties方法初始配置 com.kingdee.bos.webservice.WSConfig.getRomoteLocate() --获取安全模式设置参数,返回result:false就是成功启用了安全模式。否则失败,请检查安全模式的配置文件。
2)、修改参数后,webservice调用端需要把登录返回的session传过去,java调用示例如下,其它语言调用参考EASLoginProxy proxy =null;
WSContext context = null;
//登录
proxy = new EASLoginProxyServiceLocator().getEASLogin();
context= proxy.login("kdjgf", "", "eas", "zs70sp5", "l2", 1);
if(context. getSessionId() == null ){
throw new Exception(“login fail”);
}
//具体业务调用
String[][] vouchers= null;
WSGLWebServiceFacadeSrvProxy proxyWS= null;
proxyWS = new WSGLWebServiceFacadeSrvProxyServiceLocator().getWSGLWebServiceFacade();
//设置登录返回的session在soap头 "http://login.webservice.bos.kingdee.com"是固定的
((Stub) proxyWS).setHeader("http://login.webservice.bos.kingdee.com","SessionId", context.getSessionId());
其本质是,每次WEBSERVICE 访问,必须带上相关的 SessionID 信息,如下红字部分。系统将根据 SOAP头中的SessionID 信息,获取相关的上下文信息。
补充,donet/C#调用方式,需要部署私包sp_SOAPHead_forDoNet_V15.jar(文末附件提供),部署路径:server/lib/sp
[table]
[tr][td=641]1). 生成代理类,代理类中加入头信息变量定义public KDSessionId SessionId;//头信息要与接口中的相对应
2). 代理类中在需要调用的方法上加上参数[SoapHeader("SessionId")] //与类中定义的头同名
3). 定义头信息类 // // 头信息,需要与接口定义的头同名 // public class KDSessionId: SoapHeader { public string SessionId;//变量名与接口定义同名 }4). 调用 WSGLWebServiceFacadeSrvProxyService webuser= new WSGLWebServiceFacadeSrvProxyService(); webuser.SessionId = new KDSessionId() {SessionId = wscontext.sessionId }; webuser.deleteVoucher("03.02","2016.01", "1", "1");
二,高可用webservice方案技术方案(适用集群端口和实例端口)
1. 启用安全模式。修改eas\Server\eas\server\profiles\server1~N\config\webservice.propetties文件,另起一行,添加参数如下:
isRomoteLocate=false (注意参数名和值不要写错,可直接复制过去)
2. 在服务端server-config.wsdd(路径:eas/server/deploy/eas.ear/web.war/WEB-INF)的全局参数部分,添加scope的范围: 保证服务端返回设置jsessionid的cookie。如果缓存更新不及时,手动删除web的缓存目录/apusic/domains/server(1~N)/deploy/EAS/tmpfiles。
3,(java) 在webservice客户端调用处设置call.setMaintainSession(true); 保证axis自动携带cookie到服务端 注意,调用业务方法的时候使用登录接口时的同个call实例,不要新建。
例如:[code]//调用登陆接口
Service s=new Service();
Call call=(Call)s.createCall();
call.setOperationName("login");
call.setTargetEndpointAddress("http://localhost:8080/ormrpc/services/EASLogin?wsdl");
call.setReturnType(new QName("urn:client","WSContext"));
call.setReturnClass(WSContext.class);
call.setReturnQName(new QName("","loginReturn"));
//超时
call.setTimeout(Integer.valueOf(1000*600000*60));
call.setMaintainSession(true);
//登陆接口参数
WSContext rs=(WSContext)call.invoke(new Object[]{"am", "", "eas", "bos80demo", "l2", Integer.valueOf(0)});
if(rs. getSessionId() == null){
throw new Exception(“login fail”);
}
System.out.println(rs.getSessionId());
//清理
call.clearOperation();
//调用业务接口
call.setOperationName("addTest");
call.setTargetEndpointAddress("http://localhost:8080/ormrpc/services/WStettreeFacade");
//call.setReturnType(new QName("urn:lang.java","String"));
//call.setReturnClass(String.class);
call.setRe
Webservice EASLogin登录接口说明(本文章不再更新维护,请移步新文章)
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



