日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

Java与.NET的WebServices相互调用

發(fā)布時間:2023/12/19 asp.net 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java与.NET的WebServices相互调用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一:簡介?
本文介紹了Java與.NET開發(fā)的Web Services相互調(diào)用的技術(shù)。本文包括兩個部分,第一部分介紹了如何用.NET做客戶端調(diào)用Java寫的Web Services,第二部分介紹了如何用Java做客戶端調(diào)用.NET開發(fā)的Web Services。  
二:項目需要的工具  
WindowsXP Professial(IIS)

Eclipse3.1(已裝好Tomcat axis) VS.Net 2003 備注:下載安裝Tomcat5.5.16 以及 Axis的開發(fā)包,并做相應(yīng)配置。看我前一片文檔。 三:用.NET做客戶端調(diào)用Java寫的Web Services?
1.生成一個Java Web Services
使用Eclipse生成一個Web Services是非常簡單的。新建一個Web工程,右鍵建立一個Class,名為HelloClient.java。代碼如下:
java 代碼: public?class?HelloClient????
{????
public?String?getName(String?name)????
{????
return?"Hello,"+name;????
}????
}???

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

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

c# 代碼: protected?System.Web.UI.WebControls.TextBox?txtName;????
protected?System.Web.UI.WebControls.Button?btnSend;????
protected?System.Web.UI.WebControls.Label?lblMsg;????
???
private?JavaWebService.HelloClientService?ws;????
private?void?Page_Load(object?sender,?System.EventArgs?e)????
{????
//?在此處放置用戶代碼以初始化頁面????
ws=new?testWebService.JavaWebService.HelloClientService();????
}????
???
private?void?btnSend_Click(object?sender,?System.EventArgs?e)????
{????
lblMsg.Text=ws.getName(txtName.Text);????
}???

?

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

四:用Java做客戶端調(diào)用.NET寫的 Web Services

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

c# 代碼:
//指定SoapAction????
[SoapRpcMethod(Action="http://www.zjh.com/Rpc",RequestNamespace="http://www.zjh.com/SU",ResponseNamespace="http://www.zjh.com/SU")]????
[WebMethod]????
public?string?getName(string?name)????
{????
return?"Hello"+name;????
}??

?

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

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

java 代碼:
<%@page?pageEncoding="GBK"?contentType="text/html;?charset=GBK"?%>????
<%@page?import="org.apache.axis.client.Call"%>????
<%@page?import="org.apache.axis.client.Service"%>????
<%@page?import="javax.xml.namespace.QName"%>????
java?代碼
<%????
request.setCharacterEncoding("GBK");????
String?name=request.getParameter("name");????
String?endpoint="http://localhost/HelloClient/Service1.asmx";????
Service?service?=?new?Service();????
Call?call?=?(Call)service.createCall();????
call.setTargetEndpointAddress(new?java.net.URL(endpoint));????
call.setOperationName(new?QName("http://www.zjh.com/SU","getName"));????
call.addParameter("name",org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN);????
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);????
call.setUseSOAPAction(true);????
call.setSOAPActionURI("http://www.zjh.com/Rpc");????
String?res?=(String)call.invoke(new?Object[]{name});????
out.print(res);????
%>????

?

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


五:總結(jié)
經(jīng)過兩天的試驗,終于從技術(shù)上明確了通過Web Services實現(xiàn).net 與 java的互通是可能的。當(dāng)然有幾點是需要注意的:

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

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

?引自:http://www.cnblogs.com/lzhdim/archive/2008/12/21/1359308.html

?

轉(zhuǎn)載于:https://www.cnblogs.com/xcsn/p/4381128.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的Java与.NET的WebServices相互调用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。