1. 如何打开wsdl文件
有关更多信息,请参见
如何:在应用程序关系图中定义应用程序
和
用于定义应用程序的应用程序类型和原型。基于wsdl
文件创建
.net
web
服务提供方终结点。有关更多信息,请参见
如何:向应用程序添加终结点、
如何:向应用程序系统添加终结点和
如何:向应用程序系统的成员添加终结点。使现有的
web
服务终结点符合
wsdl
文件。有关更多信息,请参见
如何:使
web
服务终结点符合
wsdl
文件。为了生成对
asp.net
应用程序上所实现的
.net
web
服务提供方终结点的
web
引用,应指定一个不同的
wsdl
文件。可以使用
web
服务提供方终结点的“wsdl
位置”属性来指定此文件。说明:确保所指定的
wsdl
文件是对
web
服务的有效说明,并且它引用位于实际地址的
web
服务提供方终结点。如果
wsdl
文件为提供方终结点指定了一个不同的地址,将创建外部
web
服务,并且连接到该
web
服务提供方终结点的任何使用方终结点都将重新连接到该外部
web
服务。通过指定
wsdl
绑定位置来重写自动生成的
wsdl
文件中的默认
wsdl
绑定定义。有关更多信息,请参见
如何:重写
wsdl
文件中的
wsdl
绑定定义。更改要用于已实现的
asp.net
web
服务上的
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
服务、biztalk
web
服务或
.net
web
服务提供方终结点。请注意不同情况下的结果以及可能需要执行的操作,如下所述:如果添加外部或
biztalk
web
服务,则系统定义模型
(.sdm)
文件将立即出现在解决方案资源管理器的“解决方案项”文件夹中。有关更多信息,请参见
系统定义模型
(sdm)
概述。如果基于
wsdl
文件在
asp.net
应用程序上创建了
.net
web
服务提供方终结点,并且该应用程序已实现,则应用程序项目中将出现
.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-in
eclipse菜单 file -> new -> other -> web service -> web service client
eclipse下还没试过,wsad下很简单点wsdl文件-》右键-》web services->generate client 搞定!
如果我的回答没能回帮助您,请继续追答问。