.Net下實現配置化調用JAVA開發的WebService

来源:http://www.cnblogs.com/zam151/archive/2016/06/16/5592502.html
-Advertisement-
Play Games

各個系統之間進行數據交互是重要的部分,WebService是一個平臺獨立的,低耦合的,自包含的、基於可編程的web的應用程式,使用較為方便,閑話少說,正式進入到關於在.Net中調用java開發的介面。 目前JAVA開發WebService的方式很很多種:Axis2、CXF、xfire等等,但是在.N ...


  各個系統之間進行數據交互是重要的部分,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);
同理,當需要調用其他java介面時通過引用一個服務之後通過配置進行調用。 如何實現配置化調用介面呢? 我的方式在web.config裡面配置要調用的標識和該標識對應的url,通過標識去識別不同的URL,代碼如下: web.config
<!--標識串-->
<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>9995default</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介面的問題,個人在使用中覺得還是蠻方便的,如果有更好的改進建議,歡迎交流!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在文章中,我們將展示在centOS系統下如何將php升級到5.6,之前通過yum來安裝lamp環境,直接升級的話,提示沒有更新包,也就是說預設情況下php5.3.3是最新 1.查看已經安裝的php版本號 鍵入下麵代碼: 出現下麵代碼: 好,我們繼續。 2.安裝Remi跟EPEL RPM源 如果你還沒 ...
  • 語法:find [路徑] [參數] [action] -name filename,查找名為filename的文件 -iname filename,查找名為filename的文件,但是不區分大小寫 -user username,查找屬主為username的文件 -group groupname,查找 ...
  • 1、啟動 2、停止 快速停止 kill -TERM 主進程號 強制停止 kill -9 nginx 3、重啟 如果更改了配置就要重啟Nginx,要先關閉Nginx再打開?可以向Nginx 發送信號,平滑重啟。 平滑重啟命令: kill -HUP 主進程號或進程號文件路徑 或者使用 /usr/ngin ...
  • 用.NET下托管語言C#操作註冊表,主要內容包括:註冊表項的創建,打開與刪除、鍵值的創建(設置值、修改),讀取和 刪除、判斷註冊表項是否存在、判斷鍵值是否存在。 準備工作: 1:要操作註冊表,我們必須要引入必要的命名空間: using Microsoft.Win32; 在這個命名空間裡面包含了許多註 ...
  • 當我們安裝微軟的軟體,多數軟體是需要輸入license key。它有五個文本框,輸入完第一個文本框之後,游標自動跳至下一個文本框。Insus.NET今天也使用asp.net來模仿一個。呵呵。 這個演示,在輸入時,是不需要與服務端交互,只有全部輸入完畢之後,用戶點銨鈕才進行驗證。因此在這裡,寫Java ...
  • 本文內容 提高 Web 站點性能的最佳實踐 修改記錄 下麵是使頁面更快的35個最佳實踐,它們被劃分為7個類別。 類別: content、server、cookie、css、javascript、images、mobile (Yahoo 開發的瀏覽器插件 YSLOW,利用這七個類作為評價頁面的指標) ...
  • 1.創建一個MVC項目,選擇API 2.在Models層里添加Product類,IProductRepository介面,ProductRepository類 public class Product { public int ID { get; set; } public string Name ...
  • WinForm中DataGridView功能強大,除了可以自動綁定數據源外,還可以根據需求編輯列。下麵以截圖說明添加編輯列的步驟(HoverTreeSCJ 項目實際界面)。1.選擇DataGridView控制項,會在右上角出現黑色的小三角形,點擊出現快捷菜單:2.點擊“編輯”,就可以在彈出視窗添,刪除 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...