相关问题为未启用安全模式,系统调用前面的登陆返回信息引起。解决办法就是启用webservice安全模式。启用安全模式参考附件文档。
如何安全性启用
一、修改eas\Server\eas\server\profiles\server1\config\webservice.propetties文件
isRomoteLocate=false
二、修改参数后,webservice调用端需要把登录返回的session传过去,
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];
//...构造凭证对象
using (voucherService)
{
voucherService.ImportVoucher(voucherArr,0);
}
try
{
voucherService.ImportVoucher(voucherArr,0);
}
finally
{
voucherService.dispose();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。