wsdl文件如何使用|如何根据WSDL通过eclipse中的axis生成客户端代码和测试用例

1. 如何打开wsdl文件

有关更多信息,请参见如何:在应用程序关系图中定义应用程序和用于定义应用程序的应用程序类型和原型。基于wsdl文件创建.netweb服务提供方终结点。有关更多信息,请参见如何:向应用程序添加终结点、如何:向应用程序系统添加终结点和如何:向应用程序系统的成员添加终结点。使现有的web服务终结点符合wsdl文件。有关更多信息,请参见如何:使web服务终结点符合wsdl文件。为了生成对asp.net应用程序上所实现的.netweb服务提供方终结点的web引用,应指定一个不同的wsdl文件。可以使用web服务提供方终结点的“wsdl位置”属性来指定此文件。说明:确保所指定的wsdl文件是对web服务的有效说明,并且它引用位于实际地址的web服务提供方终结点。如果wsdl文件为提供方终结点指定了一个不同的地址,将创建外部web服务,并且连接到该web服务提供方终结点的任何使用方终结点都将重新连接到该外部web服务。通过指定wsdl绑定位置来重写自动生成的wsdl文件中的默认wsdl绑定定义。有关更多信息,请参见如何:重写wsdl文件中的wsdl绑定定义。更改要用于已实现的asp.netweb服务上的web服务提供方终结点的wsdl文件的位置。执行上述操作中的任何操作时,都将出现“添加web引用”对话框。说明:尽管在每一种情况下都会出现“添加web引用”对话框,但是只有在向解决方案资源管理器中的应用程序项目添加web引用时才会创建web引用。如果添加到项目中的web引用与解决方案中的现有web服务关联,则添加web引用的应用程序将连接到现有的web服务。否则,将创建新的外部web服务,并且该服务将连接到此应用程序。有关更多信息,请参见“添加web引用”对话框和如何:添加和移除web引用。在其他所有情况下,都可以使用此对话框来指定wsdl文件的位置。说明:不支持包含多个wsdl绑定的wsdl文件或引用多个web服务的disco文件。不要直接基于解决方案中已存在的web服务创建外部web服务。在应用程序关系图上,只能引用web服务提供方终结点的位置一次。而应当为解决方案中不存在的web服务指定wsdl文件位置。为web服务指定wsdl文件位置在“添加web引用”对话框中,输入wsdl文件或web服务定义的位置,然后单击“前行为表现”。提示:可以指定wsdl(.wsdl)文件、web上的位置或web服务的位置(如果web服务自动发布它的wsdl文件)。如果wsdl文件存在,则“添加web引用”对话框将显示有关web服务和它所提供的操作的信息。单击“添加引用”。将出现处于选定状态的外部web服务、biztalkweb服务或.netweb服务提供方终结点。请注意不同情况下的结果以及可能需要执行的操作,如下所述:如果添加外部或biztalkweb服务,则系统定义模型(.sdm)文件将立即出现在解决方案资源管理器的“解决方案项”文件夹中。有关更多信息,请参见系统定义模型(sdm)概述。如果基于wsdl文件在asp.net应用程序上创建了.netweb服务提供方终结点,并且该应用程序已实现,则应用程序项目中将出现.asmx文件和web服务类文件。有关更多信息,请参见应用程序关系图上的asp.net应用程序概述。如果为现有的web服务提供方终结点指定了一个不同的wsdl文件,则可能需要更新对该web服务的任何web引用。请参见任务演练:在应用程序关系图上定义应用程序其他资源在应用程序关系图中定义应用程序

2. 如何打开wsdl文件

webservice的发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使用的接口。注意,以下的代码并没有经过真正的测试,只是说明这些情况,不同版本的Axis相差很大,最好以apache网站上的例子为准,这里仅仅用于说明其基本用法。1,直接AXIS调用远程的web service,直接调用模式如下: 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 ,这种模式很少用,但是网络上有人贴出来,也转过来 :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. java如何调用webservice接口

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 = "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());

}

}

}

4. 如何根据WSDL,通过eclipse中的axis,生成客户端代码和测试用例

你好。Code Generator Wizard Guide for Eclipse Plug-ineclipse菜单 file -> new -> other -> web service -> web service clienteclipse下还没试过,wsad下很简单点wsdl文件-》右键-》web services->generate client 搞定!如果我的回答没能回帮助您,请继续追答问。


赞 (0)