http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=97301&threadID=38818&tstart=0 一直沒有時間將這個東西貼出來,最近翻閱的時候才發現,唯寫了使用java語言編寫的web service被.net所調用的部分,而沒有寫使用c#編寫的web service被java程式所調用的部分 ,所以現在將這篇文章貼出來,希望對大家有所協助. 作者:duansiyang 二、使用c#編寫的web service被java程式所調用 -----首先我們先要在visual studio .net 2003中建立一個web service。當然,如果你已經有了,那麼你可以跳過此步驟----- (1) 檔案->建立->項目(小弟使用的是中文版,英文版的讀者請諒解) (2) 項目類型選擇visual c#項目,然後在右邊選擇asp.net Web服務,輸入項目位置為http://localhost/ASPWebService (3) 單擊 確定 建立工程. (4) 在右邊的方案總管當中選擇ASPWebService,單擊右鍵,選擇添加->添加Web服務選項 (5) 輸入TestService.asmx。 (6) 在其程式碼檢視中,輸入下面的代碼 //帶參數的web service ,計算兩數的和. [WebMethod] [SoapRpcMethod (Action="http://www.duansiyang.com/Rpc",RequestNamespace="http://www.duansiyang.com/SU",ResponseNamespace="http://www.duansiyang.com/SU")] public long counter(long a ,long b) { return a+b; } //無參數的web service ,產生一個0-1之間的隨機數. [WebMethod] [SoapRpcMethod (Action="http://www.duansiyang2.com/Rpc",RequestNamespace="http://www.duansiyang2.com/SU",ResponseNamespace="http://www.duansiyang2.com/SU")] public double randomNumber() { Random rad = new Random(1); Double radnext = rad.NextDouble(); return radnext; } (7) 同時你需要引用一個命名空間 using System.Web.Services.Protocols; (8) 編譯此工程。 -----接下來我們先要在Jbuilder中建立一個調用的servlet。當然,如果jsp也可以。我們緊緊是為了舉例----- (1)建立一個工程(^_^大家應該很熟悉了,我就不說了) (2)建立一個web Module (3)建立一個Servlet,取名為TestASPWebSvrServlet. (4)加入下面的代碼 try { Long i = new Long(1); Long j = new Long(2); String endpoint = "http://localhost/ASPWebService/TestService.asmx"; Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(new java.net.URL(endpoint)); call.setOperationName(new QName("http://www.duansiyang.com/SU", "counter")); call.addParameter("a", org.apache.axis.encoding.XMLType.XSD_DATE, javax.xml.rpc.ParameterMode.IN); call.addParameter("b", org.apache.axis.encoding.XMLType.XSD_DATE, javax.xml.rpc.ParameterMode.IN); call.setReturnType(org.apache.axis.encoding.XMLType.XSD_LONG); call.setUseSOAPAction(true); call.setSOAPActionURI("http://www.duansiyang.com/Rpc"); Long k = (Long) call.invoke(new Object[] {i, j}); System.out.println("result is " + k.toString() + "."); } catch (Exception e) { System.err.println(e.toString()); } try { String endpoint = "http://localhost/ASPWebService/TestService.asmx"; Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(new java.net.URL(endpoint)); call.setOperationName(new QName("http://www.duansiyang2.com/SU", "total")); call.setReturnType(org.apache.axis.encoding.XMLType.XSD_DOUBLE); call.setUseSOAPAction(true); call.setSOAPActionURI("http://www.duansiyang2.com/Rpc"); Double k = (Double) call.invoke(new Object[0]); System.out.println("result is " + k.toString() + "."); } catch (Exception e) { System.err.println(e.toString()); } (5)你同時需要匯入下面的包 import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; import java.util.Date; import java.text.DateFormat; import javax.xml.namespace.QName; import javax.xml.rpc.ParameterMode; import org.apache.axis.client.Call; import org.apache.axis.client.Service; (6)運行,然後你可以看到結果了。 至此,關於這篇文章就算結束了,大家如果有什麼意見,可以發送郵件到我的郵箱duansiyang@tom.com或者加我的qq:365786120來和我聯絡。謝謝! |