新聞中心
WSDL(Web Services Description Language)是一種用于描述Web服務的XML語言。它提供了一種通用的方式,描述Web服務如何訪問、操作以及使用消息進行通信。在Linux下,我們可以使用各種工具來調用并測試WSDL接口,如命令行工具curl、SOAPUI等。本文將介紹如何使用這些工具來進行WSDL接口調用和測試。

一、使用curl調用WSDL接口
curl是一款常用的Linux命令行工具,用于發(fā)送和接收HTTP和HTTPS請求。我們可以使用curl來調用WSDL接口。
在調用WSDL接口之前,我們需要先獲取WSDL文件的URL地址。假設WSDL文件的URL地址為http://localhost:8080/Service/Service.wsdl,我們可以使用curl發(fā)送如下命令:
“`
$ curl -X GET -H “Content-Type: application/xml” http://localhost:8080/Service/Service.wsdl
“`
其中,-X參數指定請求方法為GET,-H參數指定請求頭中的Content-Type為application/xml,后面的URL為WSDL文件的URL地址。
執(zhí)行以上命令后,curl會向WSDL服務發(fā)送請求,并返回WSDL文件的內容。
接下來,我們需要使用WSDL工具來生成客戶端代碼,以便調用WSDL接口。在Linux下,常用的WSDL工具有wsdl2java和gsoap。
以wsdl2java為例,我們可以使用以下命令來生成Java客戶端代碼:
“`
$ wsdl2java -uri http://localhost:8080/Service/Service.wsdl -d /path/to/output/dir -p com.example.service
“`
其中,-uri參數指定WSDL文件的URL地址,-d參數指定生成的代碼存放路徑,-p參數指定生成的包名。
執(zhí)行以上命令后,wsdl2java工具會下載并解析WSDL文件,生成相應的Java客戶端代碼。
使用生成的客戶端代碼調用WSDL接口需要相應的運行環(huán)境和依賴庫支持,例如JDK、Axis等。
二、使用SOAPUI測試WSDL接口
SOAPUI是一款功能強大的開源API測試工具,可以用于測試各種類型的API,包括WSDL接口。在Linux下,我們可以使用SOAPUI來測試WSDL接口。
我們需要在SOAPUI中創(chuàng)建一個新的項目,并將WSDL文件導入到項目中。在SOAPUI的主界面上,點擊左上角的File菜單,選擇New SOAPUI Project,輸入項目名稱和WSDL文件的URL地址,點擊OK按鈕即可創(chuàng)建一個新的項目并導入WSDL文件。
接下來,我們需要創(chuàng)建一個新的測試用例,以便測試WSDL接口。在SOAPUI的左側欄中,選擇剛剛創(chuàng)建的項目,右鍵點擊并選擇New Test Case,輸入測試用例名稱,點擊OK按鈕即可創(chuàng)建一個新的測試用例。
在測試用例中,我們可以創(chuàng)建多個測試步驟,每個測試步驟可以對應WSDL接口中的一個操作。在SOAPUI的左側欄中,選擇剛剛創(chuàng)建的測試用例,右鍵點擊并選擇New Test Step,在彈出的菜單中選擇From WSDL,并選擇一個操作名稱作為測試步驟名稱,點擊OK按鈕即可創(chuàng)建一個新的測試步驟。
對于每個測試步驟,我們需要設置相應的請求和斷言。在SOAPUI的右側欄中,分別選擇Request和Assertion選項卡,填寫相應的請求和預期結果,然后點擊運行按鈕即可運行測試用例。
在運行測試用例之前,我們需要設置相應的環(huán)境變量、認證信息等。在SOAPUI的頂部工具欄中,選擇File -> Preferences,進入全局配置界面,可以設置環(huán)境變量、認證信息、代理設置等。
本文介紹了在Linux下如何使用curl和SOAPUI來調用和測試WSDL接口。通過使用這些工具,我們可以方便地測試WSDL接口,并保證接口的正確性和可靠性。在實際開發(fā)中,我們還可以使用其他工具來進行更加專業(yè)、高效的接口測試和調試,例如Postman、JMeter等。
相關問題拓展閱讀:
- java如何調用webservice接口
- 跪求大神指導:linux下使用gsoap生成C++代碼訪問WebService編譯出錯
- 如何獲取天氣預報的wsdl
java如何調用webservice接口
Java調用WebService可以直接使用Apache提供的axis.jar自己編寫代碼,伍余或者利用Eclipse自動生成WebService Client代碼,利用其中的Proxy類進行調用。理論上是一樣的,只不過用Eclipse自動生成代碼省事些。
1、編寫代碼方虛衫式:
package com.yudun.test;
import java.rmi.RemoteException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.message.PrefixedQName;
import org.apache.axis.message.SOAPHeaderElement;
import com.cezanne.golden.user.Exception;
import com.cezanne.golden.user.UserManagerServiceProxy;
import javax.xml.namespace.QName;
import java.net.MalformedURLException;
import javax.xml.rpc.ServiceException;
import javax.xml.soap.Name;
import javax.xml.soap.SOAPException;
public class testWebService {
public static String getResult() throws ServiceException, MalformedURLException, RemoteException, SOAPException
{
//標識Web Service的具體路徑
String endpoint = “WebService服務地址”;
// 創(chuàng)建 Service實例
Service service = new Service();
// 通過Service實例創(chuàng)建Call的實腔譽滾例
Call call = (Call) service.createCall();
//將Web Service的服務路徑加入到call實例之中.
call.setTargetEndpointAddress( new java.net.URL(endpoint) );//為Call設置服務的位置
// 由于需要認證,故需要設置調用的SOAP頭信息。
Name headerName = new PrefixedQName( new QName(“發(fā)布的wsdl里的targetNamespace里的url”, “string_itemName”) );
org.apache.axis.message.SOAPHeaderElement header = new SOAPHeaderElement(headerName);
header.addTextNode( “blablabla” );
call.addHeader(header);
// SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement(“發(fā)布的wsdl里的targetNamespace里的url”, “SoapHeader”);
// soapHeaderElement.setNamespaceURI(“發(fā)布的wsdl里的targetNamespace里的url”);
// try
// {
//soapHeaderElement.addChildElement(“string_itemName”).setValue(“blablabla”);
// }
// catch (SOAPException e)
// {
//e.printStackTrace();
// }
// call.addHeader(soapHeaderElement);
//調用Web Service的方法
org.apache.axis.description.OperationDesc oper;
org.apache.axis.description.ParameterDesc param;
oper = new org.apache.axis.description.OperationDesc();
oper.setName(“opName”);
param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName(“”, “arg0”), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName(“
“, “string”), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName(“”, “arg1”), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName(“
“, “string”), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName(“”, “arg2”), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName(“
“, “string”), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
oper.setReturnType(new javax.xml.namespace.QName(“
“, “string”));
oper.setReturnClass(java.lang.String.class);
oper.setReturnQName(new javax.xml.namespace.QName(“”, “return”));
oper.setStyle(org.apache.axis.constants.Style.WRAPPED);
oper.setUse(org.apache.axis.constants.Use.LITERAL);
oper.addFault(new org.apache.axis.description.FaultDesc(
new javax.xml.namespace.QName(“發(fā)布的wsdl里的targetNamespace里的url”, “Exception”),
“Exception”,
new javax.xml.namespace.QName(“發(fā)布的wsdl里的targetNamespace里的url”, “Exception”),
true
));
call.setOperation( oper );
call.setOperationName(new javax.xml.namespace.QName(“發(fā)布的wsdl里的targetNamespace里的url”, “opName”));
//調用Web Service,傳入參數
String res = ( String ) call.invoke( new Object(“arg0″,”arg1”));
System.out.println(“===============”);
return res;
}
/**
* @param args
*/
public static void main(String args) {
try {
System.out.println(getResult());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
} catch (ServiceException e) {
e.printStackTrace();
} catch (SOAPException e) {
e.printStackTrace();
}
}
}
2、利用Eclipse自動生成WebService client代碼就容易多了:(由于還不會發(fā)圖片,就用語言描述了,大家酬和看吧。。。)
首先,new project,選擇other,在輸入框中輸入Web Service Client,選中搜索后的結果,點擊Next,在Service definition中輸入 WebService的發(fā)布地址,點擊Finish
這樣,WebService Client代碼已經生成好了。
接下來寫一個Test類,在main函數中輸入如下代碼:
String endpoint = “服務器的WebService的地址”;
YourWebServiceNameProxy umsp = new YourWebServiceNameProxy (endpoint);
try {
String resultStr = umsp.opMethod(“arg0″,”arg1”);
System.out.println(resultStr);
} catch (Exception e) {
System.out.println(“異常”);
e.printStackTrace();
} catch (RemoteException e) {
System.out.println(“RemoteException異?!?;
e.printStackTrace();
}
如果還有疑問的話還有視頻,如果對你有幫助請采納!
Java通過WSDL文件來調用webservice:
注意,以下的代碼并沒有經過真正的測試,只是說明這些情況,不同版本的Axis相差很大,大家更好以apache網站上的例子為準,這里僅僅用于說明其基本用法。
1,直悄扮接AXIS調用遠程的web service
這種方法比較適合那些高手,他們能直接看懂XML格式的WSDL文件,我自己是看不懂的,尤其我不是專門搞這行歷塵的,即使一段時間看懂,后來也就忘記肢運禪了。直接調用模式如下:
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 = “
“;
//直接引用遠程的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
這種模式我從來沒有見過,也沒有試過,但是網絡上有人貼出來,我也轉過來
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(“
“);
} 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 inParam = new Parameter(“userName”, String.class, user, null);
soapParams.addElement(inParam);
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
原本的網址是
,中間個各問號,但是Linux下面它不能解析,所以去掉問號,改為點號。
那么就會出現4個文件:
GlobalWeather.java GlobalWeatherLocator.java GlobalWeatherSoap.java GlobalWeatherSoapStub.java
其中GlobalWeatherSoap.java是我們最為關心的接口文件,如果你對RMI等SOAP實現的具體細節(jié)不感興趣,那么你只需要看接口文件即可,在使用的時候,引入這個接口即可,就好像使用本地類一樣。
Java通過WSDL文件來調用webservice直接調用模慶局蔽式如下:譽州
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 = “
//直接引臘圓用遠程的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());
}
}
}
有掘棚幾種州基方冊散謹法
跪求大神指導:linux下使用gsoap生成C++代碼訪問WebService編譯出錯
高端了~gsoap是什么?
找人來幫助你解決問題,這將是幫助吧!
我不知道為什么學生認為你好運。游帶
請stdsoap2.cpp和stdsoap2.h添加到您的項目螞森中去悶磨畝……
已發(fā)送到您的E-mail地址
已發(fā)送到您的E-mail地址
如何獲取天氣預報的wsdl
1、天氣預報web services地址
用瀏覽器打開此地址,保存頁面為Weather.xml
2、新建一個java工程 webservices
建立包名 com.test.ws
將Weather.xml拷山纖貝到src目錄下
3、編寫批處理WSDL-SQUARED.CMD,使用wsdj2java生成客戶啟唯仔悄汪端調用代碼
set AXIS_HOME=D:\axis-1_4
set CLASSPATH=.;%AXIS_HOME%\lib\axis.jar;%AXIS_HOME%\lib\axis-ant.jar;%AXIS_HOME%\lib\commons-discovery-0.2.jar;%AXIS_HOME%\lib\commons-logging-1.0.4.jar;%AXIS_HOME%\lib\jaxrpc.jar;%AXIS_HOME%\lib\log4j-1.2.8.jar;%AXIS_HOME%\lib\saaj.jar;%AXIS_HOME%\lib\wsdl4j-1.5.1.jar
java org.apache.axis.wsdl.WSDL2Java -p com.test.ws Weather.xml
Java調用以WSDL形式發(fā)布的web service
webservice的 發(fā)布一般都是使用WSDL(web service descriptive language)文件的樣式來發(fā)布的,在WSDL文件里面,包含這個webservice暴露在外面可供使用的接口。今天搜索到了非常好的 webservice provider列閉塵表
這上面列出了70多個包括很多方面的free webservice provider,utilities->global weather就可以獲取全球的天氣預報。
下面我們來看Java如何通過WSDL文件來調用這些web service:
注意,以下的代碼并沒有經過真正的測試,只是說明這些情況,不同版本的Axis相差很大,大家更好以apache網站上的例子為準,這里僅僅用于說明其基本用法。
1,直接AXIS調用遠程的web service
我覺得這種方法嘩敏比較適合那些高手,他們能直接看懂XML格式的WSDL文件,我自己是看不懂的,尤其我不是專門搞這行的,即使一段時間看懂,后來也就忘記了。直接調用模式如下:
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 = “
“;
//直接引用遠程的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);
}
關于linux 調用 測試wsdl的介紹到此就結束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。
香港服務器選創(chuàng)新互聯,2H2G首月10元開通。
創(chuàng)新互聯(www.cdcxhl.com)互聯網服務提供商,擁有超過10年的服務器租用、服務器托管、云服務器、虛擬主機、網站系統(tǒng)開發(fā)經驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務器、香港云服務器、免備案服務器等。
網頁標題:Linux下如何調用并測試WSDL接口?(linux調用測試wsdl)
文章分享:http://m.fisionsoft.com.cn/article/djhoece.html


咨詢
建站咨詢
