Webservice EASLogin、 java/C# 登录接口 描述(附件凭证接口文档)
请确认调用方用的端口是eas的具体实例端口还是群集端口,实例端口参照“安全模式”方案实施,群集端口一定要用“高可用webservice方案技术方案(连接集群端口)”方案。
一. 安全模式(只适用实例端口,不推荐)
注意:85版本以后实例端口不能是实例1
启用安全模式
修改eas\Server\eas\server\profiles\server*\config\webservice.propetties文件,另起一行,添加参数如下:(注意参数名和值不要写错)
isRomoteLocate=false
是否成功启用安全模式的测试方法:(集群端口适用)
客户端set-url.bat 端口连接设置成与webserivce调用对应的实例或集群的端口一致,然后在查询分析器执行服务端脚本:
com.kingdee.bos.webservice.WSConfig.getRomoteLocate() --获取安全模式设置参数
返回result:false就是成功启用了安全模式。否则失败,请检查安全模式的配置文件。
java调用
配置文件修改后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()); vouchers = proxyWS.getVoucher("001", "2008", "5", 0, 0);
WSykbapiSrvProxyServiceLocator locator = new WSykbapiSrvProxyServiceLocator(); URL url = new URL(Resource.URL_YKB); WSykbapiSoapBindingStub soap = new WSykbapiSoapBindingStub(url, locator); soap.setHeader("http://login.webservice.bos.kingdee.com", "SessionId", sessionid); soap.setMaintainSession(true);
<SOAP-ENV:Envelopexmlns:SOAP-ENV=" SOAP-ENC=" XMLSchema-instance"xmlns:xsd=" kingdee.eas.base.btp.app.BTPManager/isPropOwner/parameter/promote"> <SOAP-ENV:Header> <ns1:SessionId xmlns:ns1="http://login.webservice.bos.kingdee.com"> ada894c0-8223-41dc-b816-61eb67dc38bd </ns1:SessionId> </SOAP-ENV:Header> <SOAP-ENV:Body> <m:isPropOwnerxmlns:m="http://com.kingdee.eas.base.btp.app.BTPManager/ Service"> <m0:bosTypeString>BF76D8D1</m0:bosTypeString> <m0:propName>id</m0:propName> </m:isPropOwner> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
补充,donet/C#调用方式,部署私包sp_SOAPHead_forDoNet_V15.jar 路径:server/lib/sp
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");
调用样例详见附件EAS登录接口说明文档(WebService).docx 和“Webservice附件”
二. 高可用webservice方案技术方案(适用集群端口和实例端口,推荐)
启用安全模式
修改eas\Server\eas\server\profiles\server*\config\webservice.propetties文件,另起一行,添加参数如下:(注意参数名和值不要写错)
isRomoteLocate=false
在服务端server-config.wsdd(路径:eas/server/deploy/eas.ear/web.war/WEB-INF, 如果缓存更新不及时,手动删除web的缓存目录/apusic/domains/server*/deploy/EAS/tmpfiles) 全局参数部分,添加scope的范围:
<parameter name="scope" value="session"/>
保证服务端返回设置jsessionid的cookie
java调用
在webservice客户端调用处设置call.setMaintainSession(true); 保证axis自动携带cookie到服务端
注意,调用业务方法的时候就使用这个call,不要新建
//调用登陆接口 Service s=new Service(); Call call=(Call)s.createCall(); call.setOperationName("login"); call.setTargetEndpointAddress("http://localhost:8080/ormrpc/services/EASLogin"); //login地址 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.setReturnQName(new QName("","addTestReturn")); call.setTimeout(Integer.valueOf(1000*600000*60)); call.setMaintainSession(true); //设置登录返回的session在soap头 "http://login.webservice.bos.kingdee.com"是固定的 SOAPHeaderElement header=new SOAPHeaderElement("http://login.webservice.bos.kingdee.com","SessionId", rs.getSessionId()); call.addHeader(header); //接口参数 String aa=(String)call.invoke(new Object[]{"test1", "test"} );
Call方式里ReturnQName,ReturnClass等参数设置可以参考实例端口方式发布生成的代理类Stub。详见附件中登录接口说明文档。
C#
1. 设置System.Net.ServicePointManager.Expect100Continue = false;
2. 参考实例端口改好
3. 在登录接口和业务接口代理类的CookieContainner设置成同一个
soapui集群端口样例
集群端口下需要设置登录接口返回的cookie,确保登录接口和业务接口请求的是同一实例。
详见附件中登录接口说明文档。调用样例详见附件“Webservice附件”。
三. 接口参数说明
入参说明
1. userName 用户名 , 2. password 密码 , 3. slnName 默认填eas, 4. dcName 数据中心代码,管理控制台可查看 5. language 语言 (l1,l2,l3), 6. dbType 数据库类型(MS SQL Server:0,DB2 UDB:1,Oracle:2,MS SQL Server:3), 7. authPattern 验证方式 默认 "BaseDB" ; 其他认证方式KEY可从 easAuthPatterns.xml中获取 ,如BaseAD 8. isEncodePwd 密码是否加密方式传递,0未加密,1加密
出参说明
WSContext.getSessionId() 返回为空则登录失败,详细信息请查看apusic日志, 不在WSContext里返回是处于安全原因。
四. https
详见附件:EAS登录接口说明文档(WebService).docx 。
五. 常见问题
1. RMIException为服务器开启了安全模式,但调用方未处理好。根据上面的说明调整调用方即可。
2. 不要把业务发布生成的class文件部署到web.war class里,统一打包当成二开jar包部署就行。
六. 临时过渡方案
由于一旦启用安全模式,所有调用方都得照规则携带sessionid和cookie,此方式为安全模式和非安全模式并存,只能作为临时过渡方案,尽量不要使用,详见“Webservice附件”。
WebService总账(凭证引入)接口说明_800(修复的).doc
webservies解决凭证问题,现金流量表引入,
集群问题
Webservice EASLogin、 java/C# 登录接口 描述(附件凭证接口文档)
本文2024-09-16 22:19:47发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-47445.html
- 鼎捷EAI整合規範文件V3.1.07 (集團).pdf
- 鼎捷OpenAPI應用場景說明_基礎資料.pdf
- 鼎捷OpenAPI應用場景說明_財務管理.pdf
- 鼎捷T100 API設計器使用手冊T100 APIDesigner(V1.0).docx
- 鼎新e-GoB2雲端ERP B2 線上課程E6-2應付票據整批郵寄 領取.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A4使用者建立權限設定.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程C3會計開帳與會計傳票.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程E6-1應付票據.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A5-1進銷存參數設定(初階篇).pdf
- 鼎新e-GoB2雲端ERP B2 線上課程D2帳款開帳與票據開帳.pdf