.Net下实现配置化调用JAVA开发的WebService
2018-06-22 07:30:12来源:未知 阅读 ()
各个系统之间进行数据交互是重要的部分,WebService是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,使用较为方便,闲话少说,正式进入到关于在.Net中调用java开发的接口。
目前JAVA开发WebService的方式很很多种:Axis2、CXF、xfire等等,但是在.Net中调用这些接口无法实现配置IP的形式进行替换调用服务,那这个问题该如何解决?
笔者测试发现相同框架开发的接口是可以进行配置URL来改变调用接口,前提是需要对JAVA基于不同框架的接口进行引用,在Visual Stuido中引用服务的方式在这里不多说,如下图引用方式进行引用:
引用完成后通过动态改变 URL来改变调用接口
1 WebService_SX.Service objService_sx = new WebService_SX.Service(); 2 objService_sx.Url = url; 3 str = objService_sx.Process(XmlStr);
<!--标识串--> <add key="orgCodeList_axis2" value="1,2" /> <add key="orgCodeList_cxf" value="3,4" /> <add key="orgCodeList_xfire" value="" /> <add key="orgCodeList_java" value="" /> <!--标识对应的服务地址--> <add key="orgCodeListAndUrl_axis2" value="1,http://220.191.238.67:9091/axis2/services/;2,http://220.191.238.67:9092/axis2/services/" /> <add key="orgCodeListAndUrl_cxf" value="3,http://220.191.238.67:82/zy;4,http://220.191.238.67:84/zy" /> <add key="orgCodeListAndUrl_xfire" value=""/> <add key="orgCodeListAndUrl_java" value=""/>
asmx服务中首先根据传入xml中的标识在标识串中查找该标识属于什么开发,如标识1属于axis2开发,再到相应的标识对应服务地址中查找标识1所对应的服务,将之前引用axis2的服务的url替换为该服务地址,即可进行正确调研不抱错。
[WebMethod] public string Process(string XmlStr) { string orgCodeList_axis2 = ConfigurationManager.AppSettings["orgCodeList_axis2"].Trim(); string orgCodeList_cxf = ConfigurationManager.AppSettings["orgCodeList_cxf"].Trim(); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(XmlStr); string str = ""; string orgCode = ""; string type = ""; string url = "";
orgCode = this.GetParam(xmlDoc, "body/resquest/", "ORG_CODE", null);
if (orgCodeList_axis2.IndexOf(orgCode) > -1) { type = "axis2"; } else if (orgCodeList_cxf.IndexOf(orgCode) > -1) { type = "cxf"; } switch (type) { case "axis2": string orgCodeListAndUrl_axis2 = ConfigurationManager.AppSettings["orgCodeListAndUrl_axis2"].Trim(); url = GetUrl(orgCode, orgCodeListAndUrl_axis2); WebService_SX.Service objService_sx = new WebService_SX.Service(); if (!string.IsNullOrEmpty(url)) { objService_sx.Url = url; } str = objService_sx.Process(XmlStr); break; case "cxf": string orgCodeListAndUrl_cxf = ConfigurationManager.AppSettings["orgCodeListAndUrl_cxf"].Trim(); url = GetUrl(orgCode, orgCodeListAndUrl_cxf); WebService_QZ.Service objService_qz = new WebService_QZ.Service(); if (!string.IsNullOrEmpty(url)) { objService_qz.Url = url; } str = objService_qz.Process(XmlStr); break; default: str = "<?xml version=\"1.0\" encoding=\"utf-8\"?><body><response><ret_code>9995</ret_code><ret_info>成功</ret_info></response></body>"; break; } return str; }
private string GetUrl(string orgCode,string List) { string WSurl = "" ; string[] array = List.Split(';'); for (int i = 0; i < array.Length; i++) { string[] detail = array[i].Split(','); if (detail[0].ToString() == orgCode) { WSurl = detail[1].ToString(); break; } } return WSurl; }
虽然代码很简单,但是确实这种可以通过配置解决调用java接口的问题,个人在使用中觉得还是蛮方便的,如果有更好的改进建议,欢迎交流!
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- asp.net源程序编译为dll文件并调用的实现过程 2020-03-29
- Asp.net MVC SignalR来做实时Web聊天实例代码 2020-03-29
- ASP.NET MVC中jQuery与angularjs混合应用传参并绑定数据 2020-03-29
- Asp.Net中WebForm的生命周期 2020-03-29
- WPF实现带全选复选框的列表控件 2020-03-29
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash