Linux下如何调用并测试WSDL接口? (linux 调用 测试wsdl)

WSDL(Web Services Description Language)是一种用于描述Web服务的XML语言。它提供了一种通用的方式,描述Web服务如何访问、操作以及使用消息进行通信。在Linux下,我们可以使用各种工具来调用并测试WSDL接口,如命令行工具curl、SOAPUI等。本文将介绍如何使用这些工具来进行WSDL接口调用和测试。

一、使用curl调用WSDL接口

curl是一款常用的Linux命令行工具,用于发送和接收HTTP和HTTPS请求。我们可以使用curl来调用WSDL接口。

在调用WSDL接口之前,我们需要先获取WSDL文件的URL地址。假设WSDL文件的URL地址为http://localhost:8080/Service/Service.wsdl,我们可以使用curl发送如下命令:

“`

$ curl -X GET -H “Content-Type: application/xml” http://localhost:8080/Service/Service.wsdl

“`

其中,-X参数指定请求方法为GET,-H参数指定请求头中的Content-Type为application/xml,后面的URL为WSDL文件的URL地址。

执行以上命令后,curl会向WSDL服务发送请求,并返回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参数指定生成的包名。

执行以上命令后,wsdl2java工具会下载并解析WSDL文件,生成相应的Java客户端代码。

使用生成的客户端代码调用WSDL接口需要相应的运行环境和依赖库支持,例如JDK、Axis等。

二、使用SOAPUI测试WSDL接口

SOAPUI是一款功能强大的开源API测试工具,可以用于测试各种类型的API,包括WSDL接口。在Linux下,我们可以使用SOAPUI来测试WSDL接口。

我们需要在SOAPUI中创建一个新的项目,并将WSDL文件导入到项目中。在SOAPUI的主界面上,点击左上角的File菜单,选择New SOAPUI Project,输入项目名称和WSDL文件的URL地址,点击OK按钮即可创建一个新的项目并导入WSDL文件。

接下来,我们需要创建一个新的测试用例,以便测试WSDL接口。在SOAPUI的左侧栏中,选择刚刚创建的项目,右键点击并选择New Test Case,输入测试用例名称,点击OK按钮即可创建一个新的测试用例。

在测试用例中,我们可以创建多个测试步骤,每个测试步骤可以对应WSDL接口中的一个操作。在SOAPUI的左侧栏中,选择刚刚创建的测试用例,右键点击并选择New Test Step,在弹出的菜单中选择From WSDL,并选择一个操作名称作为测试步骤名称,点击OK按钮即可创建一个新的测试步骤。

对于每个测试步骤,我们需要设置相应的请求和断言。在SOAPUI的右侧栏中,分别选择Request和Assertion选项卡,填写相应的请求和预期结果,然后点击运行按钮即可运行测试用例。

在运行测试用例之前,我们需要设置相应的环境变量、认证信息等。在SOAPUI的顶部工具栏中,选择File -> Preferences,进入全局配置界面,可以设置环境变量、认证信息、代理设置等。

本文介绍了在Linux下如何使用curl和SOAPUI来调用和测试WSDL接口。通过使用这些工具,我们可以方便地测试WSDL接口,并保证接口的正确性和可靠性。在实际开发中,我们还可以使用其他工具来进行更加专业、高效的接口测试和调试,例如Postman、JMeter等。

相关问题拓展阅读:

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服务地址”;

// 创建 Service实例

Service service = new Service();

// 通过Service实例创建Call的实腔誉滚例

Call call = (Call) service.createCall();

//将Web Service的服务路径加入到call实例之中.

call.setTargetEndpointAddress( new java.net.URL(endpoint) );//为Call设置服务的位置

// 由于需要认证,故需要设置调用的SOAP头信息。

Name headerName = new PrefixedQName( new QName(“发布的wsdl里的targetNamespace里的url”, “string_itemName”) );

org.apache.axis.message.SOAPHeaderElement header = new SOAPHeaderElement(headerName);

header.addTextNode( “blablabla” );

call.addHeader(header);

// SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement(“发布的wsdl里的targetNamespace里的url”, “SoapHeader”);

// soapHeaderElement.setNamespaceURI(“发布的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(“发布的wsdl里的targetNamespace里的url”, “Exception”),

“Exception”,

new javax.xml.namespace.QName(“发布的wsdl里的targetNamespace里的url”, “Exception”),

true

));

call.setOperation( oper );

call.setOperationName(new javax.xml.namespace.QName(“发布的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代码就容易多了:(由于还不会发图片,就用语言描述了,大家酬和看吧。。。)

首先,new project,选择other,在输入框中输入Web Service Client,选中搜索后的结果,点击Next,在Service definition中输入 WebService的发布地址,点击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实现的具体细节不感兴趣,那么你只需要看接口文件即可,在使用的时候,引入这个接口即可,就好像使用本地类一样。

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添加到您的项目蚂森中去闷磨亩……

已发送到您的E-mail地址

已发送到您的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形式发布的web service

webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在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的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » Linux下如何调用并测试WSDL接口? (linux 调用 测试wsdl)