Webservice EASLogin、 java/C# 登录接口 描述(附件凭证接口文档)

栏目:eas cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

Webservice EASLogin、 java/C# 登录接口 描述(附件凭证接口文档)

   请确认调用方用的端口是eas的具体实例端口还是群集端口,实例端口参照“安全模式”方案实施,群集端口一定要用“高可用webservice方案技术方案(连接集群端口)”方案。 


 一.    安全模式(只适用实例端口,不推荐)

    注意:85版本以后实例端口不能是实例1

  •   启用安全模式

  1. 修改eas\Server\eas\server\profiles\server*\config\webservice.propetties文件,另起一行,添加参数如下:(注意参数名和值不要写错)

  2. isRomoteLocate=false
  3. 是否成功启用安全模式的测试方法:(集群端口适用)

    客户端set-url.bat 端口连接设置成与webserivce调用对应的实例或集群的端口一致,然后在查询分析器执行服务端脚本

  4. 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方案技术方案(适用集群端口和实例端口,推荐)

  •   启用安全模式

  1. 修改eas\Server\eas\server\profiles\server*\config\webservice.propetties文件,另起一行,添加参数如下:(注意参数名和值不要写错)

  2. isRomoteLocate=false
  3. 在服务端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

sp_SOAPHead_forDoNet_V15.zip


webservies解决凭证问题,现金流量表引入,


集群问题

Webservice EASLogin、 java/C# 登录接口 描述(附件凭证接口文档)

请确认调用方用的端口是eas的具体实例端口还是群集端口,实例端口参照“安全模式”方案实施,群集端口一定要用“高可用webservice方案...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息