成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java與.NET的WebServices相互調用

開發 后端
本文介紹了Java與.NET開發的Web Services相互調用的技術。包括.NET與Java互相做彼此的客戶端相互調用的代碼實現。

本文包括兩個部分,***部分介紹了如何用.NET做客戶端調用Java寫的Web Services,第二部分介紹了如何用Java做客戶端調用.NET開發的Web Services。
 
項目需要的工具 

◆WindowsXP Professial(IIS)

◆Eclipse3.1(已裝好Tomcat axis)

◆VS.Net 2003

備注:下載安裝Tomcat5.5.16 以及 Axis的開發包,并做相應配置。看我前一片文檔。

用.NET做客戶端調用Java寫的Web Services

1.生成一個JavaWeb Services

使用Eclipse生成一個Web Services是非常簡單的。新建一個Web工程,右鍵建立一個Class,名為HelloClient.java。代碼如下:

Java代碼:

  1. public class HelloClient      
  2. {      
  3. public String getName(String name)      
  4. {      
  5. return "Hello,"+name;      
  6. }      
  7. }    

右鍵此文件選擇"WebServices"-->"Create Web Service"即可部署為本機的一個ws。在IE瀏覽器中輸入http://localhost:8008/testWebService/services/HelloClient可以看到已經部署了的HelloClient服務。輸入http://localhost:8008/testWebService/services/HelloClient?wsdl這個服務的描述文件。

新建一個項目(WinForm,ASP.net都可以),我在這里使用的是一個Asp.Net項目。在起始頁面上放置一個文本輸入框用來輸入,一個標簽用來顯示調用Web Services的結果,放置一個按鈕,用來單擊調用Web Services。然后,選擇添加Web 引用,URL一欄里填入http://localhost:8008/testWebService/services/HelloClient?wsdl,Web 引用的名稱輸入JavaWebService,單擊添加引用按鈕就可以了。此時,我們可以在VS.net 的Solution Explore中看到這個Web 引用。添加代碼如下:

C# 代碼:

  1. protected System.Web.UI.WebControls.TextBox txtName;      
  2. protected System.Web.UI.WebControls.Button btnSend;      
  3. protected System.Web.UI.WebControls.Label lblMsg;      
  4.      
  5. private JavaWebService.HelloClientService ws;      
  6. private void Page_Load(object sender, System.EventArgs e)      
  7. {      
  8. // 在此處放置用戶代碼以初始化頁面      
  9. ws=new testWebService.JavaWebService.HelloClientService();      
  10. }      
  11.      
  12. private void btnSend_Click(object sender, System.EventArgs e)      
  13. {      
  14. lblMsg.Text=ws.getName(txtName.Text);      
  15. }     

這樣,一個.NET客戶端就完成了,測試一下,工作正常,OK.

用Java做客戶端調用.NET寫的 Web Services

1. 用VS.NET新建一個Asp Web Services工程,添加一個web 服務,命名為Service1.asmx。新增一個web method,代碼如下:

C# 代碼:

  1. //指定SoapAction      
  2. [SoapRpcMethod(Action="http://www.xxx.com/Rpc",
    RequestNamespace=
    "http://www.xxx.com/SU",ResponseNamespace="http://www.xxx.com/SU")]      
  3. [WebMethod]      
  4. public string getName(string name)      
  5. {      
  6. return "Hello"+name;      
  7. }   

然后運行它,并利用IE進行測試成功。

2. 打開Eclipse,新建一個Web項目,添加一個JSP頁面 ,命名為action_hello.jsp,輸入下列代碼:

Java代碼:

  1. <%@page pageEncoding="GBK" contentType="text/html; charset=GBK" %>      
  2. <%@page import="org.apache.axis.client.Call"%>      
  3. <%@page import="org.apache.axis.client.Service"%>      
  4. <%@page import="javax.xml.namespace.QName"%>      
  5. java 代碼  
  6. <%      
  7. request.setCharacterEncoding("GBK");      
  8. String name=request.getParameter("name");      
  9. String endpoint="http://localhost/HelloClient/Service1.asmx";      
  10. Service service = new Service();      
  11. Call call = (Call)service.createCall();      
  12. call.setTargetEndpointAddress(new java.net.URL(endpoint));      
  13. call.setOperationName(new QName("http://www.zjh.com/SU","getName"));      
  14. call.addParameter("name",org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN);      
  15. call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);      
  16. call.setUseSOAPAction(true);      
  17. call.setSOAPActionURI("http://www.zjh.com/Rpc");      
  18. String res =(String)call.invoke(new Object[]{name});      
  19. out.print(res);      
  20. %>      

這個要比Java調用Java寫的ws來的復雜。ws和Java客戶端都要設置SOAPAction,否則會有異常說 System.Web.Services.Protocols.SoapException: 服務器未能識別 HTTP 標頭 SOAPAction 的值

總結

經過兩天的試驗,終于從技術上明確了通過Web Services實現.net 與 java的互通是可能的。當然有幾點是需要注意的:

1. 在提供Web Services的時候,盡量使用xml schema中支持的變量類型做參數。如果使用.net 中的dataset這種類型,對于java來說解析起來將是一個災難,當然,理論上是可以解析的。但是從效率角度來說,在Web Services與客戶端交換信息的過程中,始終有一個序列化和反序列化的問題。如果使用dataset這種類型,系統還需要對它進行序列化操作,這將是一個很耗費資源的過程。而使用string類型將簡單很多。

2. 如果使用了soap header等擴展功能,例如使用了微軟提供的WSE技術,它們之間的相互通信需要作特殊處理。

 

【編輯推薦】

  1. .NET與J2EE之爭 選擇更適合自己的平臺
  2. ASP.NET頁面請求原理淺析
  3. 關于能提高Java代碼可重用性的三個措施
  4. .NET 4.0 Beta 1將為PLINQ帶來生機?
  5. 淺談.NET開發中多線程思維方式
責任編輯:佚名 來源: 博客園
相關推薦

2009-08-19 04:16:00

C#代碼與#函數相互調

2010-07-15 12:32:03

SQL Server

2009-08-19 14:35:12

C++和C#相互調用C

2009-07-24 16:05:05

調用Web ServiASP.NET

2009-06-12 10:25:42

Webservices

2009-08-03 14:36:08

c#組件

2009-07-31 14:26:38

JavaScript函C#函數

2024-03-11 10:21:53

.NET9調用FCall

2013-08-27 10:52:35

Java.Net

2012-08-15 10:16:40

云計算數據中心虛擬化

2009-08-26 18:11:52

前臺與后臺方法互調

2014-09-22 15:14:04

2010-11-01 06:18:21

.NET

2009-07-03 17:39:20

JSP與EJB

2012-12-24 09:20:48

AndoidUnity3D

2022-09-27 21:14:54

Spring事務傳播機制

2012-05-15 13:40:44

JavaCXF.NET

2009-07-10 13:09:53

.Net與Java S

2010-04-20 14:13:08

Unix操作系統

2009-04-13 09:09:53

WebServices返回數據橫向
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美综合视频在线 | 激情五月综合 | 久久99久久99精品免视看婷婷 | 久久久www成人免费无遮挡大片 | 97人澡人人添人人爽欧美 | 久久久久久国模大尺度人体 | 日韩资源 | 国产精品国产三级国产aⅴ中文 | 九九热久久免费视频 | av黄色免费在线观看 | 黑人性hd| 草草视频在线免费观看 | 亚洲成人精品 | 操人视频在线观看 | 国产成人jvid在线播放 | 亚洲精品永久免费 | 99亚洲综合| 丁香婷婷成人 | 自拍偷拍第一页 | 91人人在线 | 久久久精品视频一区二区三区 | 一区二区成人在线 | 国产精品免费视频一区 | 亚洲欧美成人在线 | 美女激情av| 最近日韩中文字幕 | 欧美专区日韩 | 欧美成人一区二免费视频软件 | 成人中文字幕在线 | 亚洲一区二区三区在线视频 | 91视频进入| 久久久久一区二区三区 | 视频一区二区在线观看 | www.日韩| 天天澡天天狠天天天做 | 精品一二区| 一区二区三区四区电影视频在线观看 | 午夜在线| 亚洲欧洲色视频 | 丝袜 亚洲 另类 欧美 综合 | 日本爱爱视频 |