您的位置:首页 > 编程语言 > Java开发

java 调用.net webService

2011-06-13 17:02 302 查看
最近公司与另外一家公司合作,我们公司用的java,另外一家公司用的.net,所以我们用webService做前端调用。我们公司只做客户端调用,第一次做这个东西,一头雾水,今天刚做好,弄了好长时间才做好,现在总结一下与大家分享。

我是用的axis实现的:

第一步:从网上下载:axis-bin-1_4.zip,javamail-1_3_2-upd.zip两个包;

第二步:将两个包解压在各自的lib包下分别找:axis.jar,

commons-discovery-0.2.jar,

jaxrpc.jar,

mail.jar,

saaj.jar,

wsdl4j-1.5.1.jar

将这六个包导入项目的web-inf/lib下;

第三步:调用:

类中要引入的包有:
import java.net.URL;

import javax.xml.namespace.QName;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

以下是调用方法:

String url = "http://192.168.0.2/sehr.service/ixman.asmx";//wsdl的地址

String namespace = "http://www.zysoft.com.cn";//wsdl上的命名空间,这里namespace最后一定不能以“/”结尾
String method = "GetBaseInfo";//要调用的方法名称

Service service = new Service();

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

call.setUseSOAPAction(true);

call.setTargetEndpointAddress(new URL(url));//url为wsdl的地址

call.setOperationName(new QName(namespace,method)); // 设置要调用的方法;这里namespace最后一定不能以“/”结尾

call.addParameter(new QName(namespace,"strSSID"), org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);//设置方法的第一个参数,其中"strSSID"为参数名,后跟参数类型,是IN输入参数还是OUT输出参数

call.addParameter(new QName(namespace,"strCredential"), org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);//设置方法的第二个参数,其中,"strCredential"为参数名,后跟参数类型,是IN输入参数还是OUT输出参数

call.addParameter(new QName(namespace,"strKey"), org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);//设置方法的第三个参数,其中,"strKey"为参数名,后跟参数类型,是IN输入参数还是OUT输出参数

call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING); // 设置方法的返回值类型

call.setSOAPActionURI(namespace+"/" + method););//设置SOAPAction;这里namespace与method之前一定要加“/”

Object[] paramValues = new Object[] {"123456789", "111", "123"};//设置参数的值

String ret = (String) call.invoke(paramValues);//执行方法的调用,并得到返回值ret

注:1.在设置方法名时,namespace不能以“/”结尾,则设置SOAPAction时namespace与method 之间一定要加“/”否则报错,就这一个小小的细节就花费了我一天的时间去排错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: