netjavawebservice
『壹』 java中的webservice是什麼
WebService是基於網路的、分布式的模塊化組件,它執行特定的任務,遵守具體的技術規范,
這些規范使得WebService能與其他兼容的組件進行互操作。它可以使用標準的互聯網協議,
像超文本傳輸協議HTTP和XML,將功能體現在互聯網和企業內部網上。
WebService平台是一套標准,它定義了應用程序如何在Web上實現互操作性。你可以用你喜歡的任何語言,在
你喜歡的任何平台上寫WebService。WebService是構建互聯網分布式系統的基本部件。"
網路服務"(WebService)的本質,就是通過網路調用其他網站的資源。
什麼是SOAP
SOAP:簡單對象訪問協議,簡單對象訪問協議(SOAP)是一種輕量的、簡單的、基於 XML 的協議,
它被設計成在 WEB 上交換結構化的和固化的信息。 SOAP 可以和現存的許多網際網路協議和格式結合使用,
包括超文本傳輸協議( HTTP),簡單郵件傳輸協議(SMTP),多用途網際郵件擴充協議(MIME)。
它還支持從消息系統到遠程過程調用(RPC)等大量的應用程序。我現在的這家公司用的就是webservice,前台是.net後台是Java
『貳』 求救Java怎麼調用 net的webService
一. 使用axis1.x調用webservice方法
Axis的最常用版本:1.4和2.0版本。以下為1.4版本
核心代碼:
// webserviceURL
service_url = "http://vip.cxcod.com/PodApi/GetPodStr.asmx?wsdl";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(service_url));
// 設置要調用的方法
// http://intelink.net/是wsdl中definitions根節點的targetNamespace屬性值
call.setOperationName(new QName("http://intelink.net/","GetStrByJobno"));
// 該方法需要的參數
call.addParameter("CustNo",
org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);
call.addParameter("passwd",
org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);
call.addParameter("Jobno",
org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);
// 方法的返回值類型
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
// call.setUseSOAPAction(true); //call.setSOAPActionURI("http://intelink.net/GetStrByJobno");
// 調用該方法, new Object[] { CustNo, passwd, Jobno}為參數列表
String xmlStr = call.invoke(new Object[] { CustNo, passwd, Jobno}).toString();
} catch (Exception e) {
e.printStackTrace();
}
JAVA用這種方式調用webservice,需要注意的地方:
1. 伺服器未能識別 HTTP 標頭 SOAPAction 的值:
症狀一:
Web Service + ASP.NET 應用程序部署到伺服器默認目錄中,在IE中用http://<伺服器地址>/<程序目錄名>/<默認啟動頁面名>發生「伺服器未能識別 HTTP 標頭 SOAPAction 的值」錯誤。
症狀二:
在Java平台上調用.NET Web Service的服務時,出現"伺服器未能識別 HTTP 標頭 SOAPAction 的值"。
症狀三:
在Java平台下調用.NET WEB Service,出現數據時有時無。
解決對策:
給.NET的WebService類(即.asmx文件下的類)添加屬性[SoapDocumentService(RoutingStyle=SoapServiceRoutingStyle.RequestElement)]
小知識:
什麼是SoapAction?它在WSDL中有何作用?
SOAPAction HTTP request header被用來標識SOAP HTTP請求的目的地,其值是個URI地址。SOAP發送並不限制格式、URI特徵或其必須可解析,那麼在這種情況下,發送一個HTTP SOAP請求時,其HTTP客戶端必須使用/指明SOAPAction HTTP request header。
SOAPAction header的內容可以被用在服務端,諸如:防火牆適當的過濾基於HTTP的SOAP請求消息等場景。SOAPAction header的值為空串("")表示SOAP消息的目的地由HTTP請求的URI標識;無值則表示沒有指定這條消息的目的地。
本人補充:
在.NET環境調用.NET WebService出現 「SOAPAction 值在 XML Web services 的所有方法中不唯一的錯誤」,也可以通過此法解決。
2. 為了Java能夠調用WebService的方法,所以。NETP寫的WebServiced的每個方法都要聲明為Rpc方法,即添加"[SoapRpcMethod.....]".
例如:[WebMethod]
[SoapRpcMethod(Use=SoapBindingUse.Literal,Action= http://tempuri.org/HelloWorld", RequestNamespace = "http://tempuri.org/", ResponseNamespace = "http://tempuri.org/")]
3. 對返回值、參數的處理上:
應盡量將webservice方法的返回值、參數都寫成字元串(String)不要使用復雜對象類型,這樣便於在網路上傳輸。避免了復雜對象類型的不易轉換問題。。。對於返回類型是字元串數組型的,可以設置返回類型為org.apache.axis.encoding.XMLType.SOAP_VECTOR或java.lang.String[].class.
二.利用xfire調用WebService
XFire是新一代的Java Web服務引擎,XFire使得在JavaEE應用中發布Web服務變得輕而易舉。和其他Web服務引擎相比,XFire的配置非常簡單,可以非常容易地和Spring集成,它使得Java開發人員終於可以獲得和.Net開發人員一樣的開發效率。
核心代碼:
Service service = new ObjectServiceFactory().create(IWebservice.class);
XFireProxyFactory factory =
new XFireProxyFactory(XFireFactory.newInstance().getXFire());
String url= "http://localhost:8080/webservices/services/webservices";
IWebservice iw = (IWebservice) factory.create(service, url);
List list=iw.getTest();
『叄』 如何使用java做webservice和java使用.net的webservice
做webService服務,可以使用Axis、XFire、CXF等框架的支持。
個人建議你使用CXF。
下載個cxf的jar包,進入到bin文件夾下,你會看到很多可執行的命令,ms-dos中進入到此路徑下,使用命令即可創建代碼。
以下為生成java源代碼的命令:
wsdl2java [-client](只生成客戶端的包)-p [com.zte.ebs.hellocxf.client] -d c:\XXXX(輸出目錄) d:\XXXX.wsdl(wsdl存在路徑)
如過你不想使用cxf,而使用其他的框架,則大同小異,到網上搜索一下即可。道理都是一樣的。
『肆』 .net調用Java webservice
java用的很少
驗證應該只是webservice內部的邏輯
傳遞的東西應該都一樣的
soap就應該屏蔽了平台的差異
不知道為什麼會有你說的問題
『伍』 NET中怎麼調用JAVA的WebService服務介面
vs中有工具,通過添加web引用地址就能自動創建訪問client,並且創建了類對象,你通過類對象就能夠使用webservice了。
『陸』 net 怎麼引用java的webservice
在項目中添加一個名為「getPopCheckedInfo」的xml文件,將上面的XML粘貼上去,然後再將這個XML文件作為內嵌資源(在這個的文件屬性裡面的『生產操作』選擇『嵌入的資源』),使用的時候直接載入這個XML文件,然後修改那3個節點的值就可以了(用戶名和密碼一般都預先確定的,也可以直接寫在XML文件里,調用的時候就只要對那一個參數賦值了)。使用內嵌資源是為了不讓外面看到我們的那個XML文件,以防被修改了什麼的。
『柒』 java和.net的webservice哪個好
這個沒有可比性的,webservice只是一種技術,解決的是異構或者分布系統的通訊問題
『捌』 .NET中怎麼調用JAVA的WebService服務介面。
右鍵項目,添加web引用。把地址添加進來。並寫好你給它什麼命名空間
再在.cs代碼中using
你定義的命名空間引進來。就當是引入一個dll一樣用了
『玖』 java的webService客戶端調用.net 和java服務端通用嗎
webservice由於是通用協議,與具體語言無關
所以理論上服務端實現語言的改動不至於影響客戶端