java調用webservice接口 幾種方法

2022-05-27    分類: 網站建設

webservice的 發布一般都是使用WSDL(web service descriptive language)文件的樣式來發布的,在WSDL文件里面,包含這個webservice暴露在外面可供使用的接口。

下面我們來看Java如何通過WSDL文件來調用這些web service:

注意,以下的代碼并沒有經過真正的測試,只是說明這些情況,不同版本的Axis相差很大,大家最好以apache網站上的例子為準,這里僅僅用于說明其基本用法。

1,直接AXIS調用遠程的web service
我覺得這種方法比較適合那些高手,他們能直接看懂XML格式的WSDL文件,我自己是看不懂的,尤其我不是專門搞這行的,即使一段時間看懂,后來也就忘記了。直接調用模式如下:

[java] view plain copy
import java.util.Date;
import java.text.DateFormat;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
import java.lang.Integer;
import javax.xml.rpc.ParameterMode;

public class caClient {
public static void main(String[] args) {

try {
String endpoint = "http://localhost:8080/ca3/services/caSynrochnized?wsdl";
// 直接引用遠程的wsdl文件
// 以下都是套路
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(endpoint);
call.setOperationName("addUser");// WSDL里面描述的接口名稱
call.addParameter("userName",
org.apache.axis.encoding.XMLType.XSD_DATE,
javax.xml.rpc.ParameterMode.IN);// 接口的參數
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);// 設置返回類型
String temp = "測試人員";
String result = (String) call.invoke(new Object[] { temp });
// 給方法傳遞參數,并且調用方法
System.out.println("result is " + result);
} catch (Exception e) {
System.err.println(e.toString());
}
}
}

2,直接SOAP調用遠程的webservice

[java] view plain copy
import org.apache.soap.util.xml.*;
import org.apache.soap.*;
import org.apache.soap.rpc.*;

import java.io.*;
import java.net.*;
import java.util.Vector;

public class caService {
public static String getService(String user) {
URL url = null;
try {
url = new URL(
"http://192.168.0.100:8080/ca3/services/caSynrochnized");
} catch (MalformedURLException mue) {
return mue.getMessage();
}
// This is the main SOAP object
Call soapCall = new Call();
// Use SOAP encoding
soapCall.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
// This is the remote object we're asking for the price
soapCall.setTargetObjectURI("urn:xmethods-caSynrochnized");
// This is the name of the method on the above object
soapCall.setMethodName("getUser");
// We need to send the ISBN number as an input parameter to the method
Vector soapParams = new Vector();

// name, type, value, encoding style
Parameter isbnParam = new Parameter("userName", String.class, user,
null);
soapParams.addElement(isbnParam);
soapCall.setParams(soapParams);
try {
// Invoke the remote method on the object
Response soapResponse = soapCall.invoke(url, "");
// Check to see if there is an error, return "N/A"
if (soapResponse.generatedFault()) {
Fault fault = soapResponse.getFault();
String f = fault.getFaultString();
return f;
} else {
// read result
Parameter soapResult = soapResponse.getReturnValue();
// get a string from the result
return soapResult.getValue().toString();
}
} catch (SOAPException se) {
return se.getMessage();
}
}
}

3,使用wsdl2java把WSDL文件轉成本地類,然后像本地類一樣使用,即可。

這是像我這種懶人最喜歡的方式,仍然以前面的global weather report為例。
首先 java org.apache.axis.wsdl.WSDL2Java http://www.webservicex.net/globalweather.asmx.WSDL

原本的網址是http://www.webservicex.net/globalweather.asmx?WSDL,中間個各問號,但是Linux下面它不能解析,所以去掉問號,改為點號。


那么就會出現4個文件:

GlobalWeather.java 

GlobalWeatherLocator.java

GlobalWeatherSoap.java

GlobalWeatherSoapStub.java


其中GlobalWeatherSoap.java是我們最為關心的接口文件,如果你對RMI等SOAP實現的具體細節不感興趣,那么你只需要看接口文件即可,在使用的時候,引入這個接口即可,就好像使用本地類一樣。

本文名稱:java調用webservice接口 幾種方法
當前URL:http://m.kartarina.com/news35/159735.html

成都網站建設公司_創新互聯,為您提供網站制作、建站公司、小程序開發、域名注冊關鍵詞優化、網站內鏈

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

網站優化排名
主站蜘蛛池模板: 日韩夜夜高潮夜夜爽无码| 久久久久久久久无码精品亚洲日韩| 五月婷婷无码观看| 成年无码av片在线| 蜜桃成人无码区免费视频网站| 久久美利坚合众国AV无码| 久久精品无码精品免费专区| 亚洲欧洲免费无码| 中文字幕有码无码AV| 国产午夜无码片在线观看| 无码中文字幕日韩专区| 午夜亚洲av永久无码精品| 亚洲av永久无码嘿嘿嘿 | 精品欧洲AV无码一区二区男男| 免费a级毛片无码a∨蜜芽试看| 13小箩利洗澡无码视频网站免费| 亚洲国产成人无码AV在线影院| 久久人妻少妇嫩草AV无码蜜桃| 久久亚洲AV成人无码国产最大| 波多野结衣AV无码久久一区| 日韩加勒比一本无码精品| 亚洲av无码专区在线电影| 日韩人妻无码精品一专区 | 黑人无码精品又粗又大又长 | 免费无码国产在线观国内自拍中文字幕 | 久久久久久久久无码精品亚洲日韩| 亚洲AV无码国产丝袜在线观看| 国产成人精品无码专区| 无码一区二区三区免费视频| 亚洲AV无码成人精品区狼人影院| 91精品久久久久久无码| 久久精品中文字幕无码绿巨人| 亚洲热妇无码AV在线播放| 国产精品午夜福利在线无码| 欧日韩国产无码专区| 国产午夜无码视频免费网站| 国产成人亚洲精品无码AV大片| 性色av无码免费一区二区三区 | 无码中文av有码中文av| 亚洲av无码兔费综合| 亚洲av无码片vr一区二区三区|