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 之间一定要加“/”否则报错,就这一个小小的细节就花费了我一天的时间去排错。
我是用的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 之间一定要加“/”否则报错,就这一个小小的细节就花费了我一天的时间去排错。
相关文章推荐
- java 调用.net webservice 带soap验证头消息方式
- 用JAVA调用.net的webservice实例
- .Net调用Java的WebService之亲身体验 (转自梦幻Dot Net)
- .NET调用JAVA的WebService方法
- 用java写的调用.net写的WebService时,调用成功,参数传不过去的原因
- .Net调用Java的WebService之亲身体验 (转自梦幻Dot Net)
- WebService java 调用 .net方法
- Java通过axis调用.NET WebService
- Java调用.NET webservice方法的几种方式
- .NET调用Java写的WebService[原]
- .net写的WebService被Java调用
- 解决:Java调用.net的webService产生“服务器未能识别 HTTP 标头 SOAPAction 的值”错误
- Java调用.Net写的Webservice
- .net与java建立WebService再互相调用
- .NET调用Java写的WebService
- .NET调用JAVA的WebService方法
- java利用axis2调用.net写的webservice,传递自定义的实体类参数
- java调用.net发布webservice心得
- java和.net互相调用webservice注意事项
- Java平台调用.net开发的WebService报错处理