java调用.net的webservice[转]
一、引用jar包。
完整包路径:http://files.cnblogs.com/files/chenghu/axis完整jar包.rar
二、java程序代码如下所示:
package edu.sjtu.erplab.aspwebservice; import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType; public class AspWebServiceTestClient1 { public static void main(String[] args) throws Exception {
// 定义方法
String method = "HelloWorld";
String methodPlus = "plus";
String methodMinus = "minus";
String methodMultiply = "multiply";
String methodDivide = "divide";
String methodSayTo = "sayHelloToPersonNew";
// 定义服务
Service service = new Service(); // 测试1:调用HelloWorld方法,方法没有参数
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(
"http://localhost:5329/Service1.asmx"));
call.setUseSOAPAction(true);
// 第一种设置返回值类型为String的方法
call.setReturnType(XMLType.SOAP_STRING);
call.setOperationName(new QName("http://erplab.sjtu.edu/", method));
call.setSOAPActionURI("http://erplab.sjtu.edu/HelloWorld");
String retVal1 = (String) call.invoke(new Object[] {});
System.out.println(retVal1); // 测试2: 调用sayHelloToPersonNew方法,方法有一个参数:name。sayHelloToPersonNew(String name)
Call call2 = (Call) service.createCall();
call2.setTargetEndpointAddress(new java.net.URL(
"http://localhost:5329/Service1.asmx"));
call2.setUseSOAPAction(true);
call2.setReturnType(new QName("http://www.w3.org/2001/XMLSchema",
"string"));
// 第二种设置返回值类型为String的方法
call2.setOperationName(new QName("http://erplab.sjtu.edu/", methodSayTo));
call2.setSOAPActionURI("http://erplab.sjtu.edu/sayHelloToPersonNew");
call2.addParameter(new QName("http://erplab.sjtu.edu/", "name"),// 这里的name对应参数名称
XMLType.XSD_STRING, ParameterMode.IN);
String retVal2 = (String) call2
.invoke(new Object[] { "asp webservice" });
System.out.println(retVal2); // 测试3: 调用sgetFloat方法,方法有一个参数:x,为float类型
Call call3 = (Call) service.createCall();
call3.setTargetEndpointAddress(new java.net.URL(
"http://localhost:5329/Service1.asmx"));
call3.setUseSOAPAction(true);
call3.setEncodingStyle(null);// 必须有,否为会系统报错。最关键的语句。决定生成xmlns的中soap的命名空间
// 第一种设置返回值类型为Float类型的方法
call3.setReturnType(org.apache.axis.encoding.XMLType.XSD_FLOAT);
call3.setOperationName(new QName("http://erplab.sjtu.edu/", "getFloat"));
call3.setSOAPActionURI("http://erplab.sjtu.edu/getFloat");
call3.addParameter(new QName("http://erplab.sjtu.edu/", "x"),// 这里的x对应参数名称
XMLType.XSD_FLOAT, ParameterMode.INOUT);
Float retVal3 = (Float) call3.invoke(new Object[] { 123 });
System.out.println(retVal3); // 测试4: 调用plus方法,方法有两个参数:x,y。plus(float x, float y)
Call call4 = (Call) service.createCall();
call4.setTargetEndpointAddress(new java.net.URL(
"http://localhost:5329/Service1.asmx"));
call4.setUseSOAPAction(true);
call4.setEncodingStyle(null);
// 第二种设置返回值类型为Float类型的方法
call4.setReturnType(new QName("http://www.w3.org/2001/XMLSchema",
"float"));
call4.setOperationName(new QName("http://erplab.sjtu.edu/", methodPlus));// 加法
call4.setSOAPActionURI("http://erplab.sjtu.edu/plus");
call4.addParameter(new QName("http://erplab.sjtu.edu/", "x"),// 参数x
org.apache.axis.encoding.XMLType.XSD_FLOAT, ParameterMode.IN);
call4.addParameter(new QName("http://erplab.sjtu.edu/", "y"),// 参数y
XMLType.XSD_FLOAT, ParameterMode.IN);
Float retVal4 = (Float) call4.invoke(new Object[] { 5, 6 });
System.out.println(retVal4);
}
}
三、注意点:
(a)我们发现如果参数是String类型的,那么可以不需要设置call的参数 call3.setEncodingStyle(null); 但是如果传入参数为float类型,那么就必须加上这一条语句。
(b)设置返回值类型有两种方式:
一种是
call.setReturnType(XMLType.SOAP_STRING);
另外一种是
call2.setReturnType(new QName("http://www.w3.org/2001/XMLSchema","string"));
这两种方法是等价的
java调用.net的webservice[转]的更多相关文章
- java调用第三方的webservice应用实例
互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示. 一些常用的webservice网站的链接地址: ...
- java调用第三方的webservice应用实例【转载】
互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示. 一些常用的webservice网站的链接地址: ...
- java调用.net的webservice
目录(?)[-] 一参考文献 二概述 三实例 注意点 一.参考文献 1. http://www.cnblogs.com/xuqifa100/archive/2007/12/13/993926.ht ...
- 转 java调用php的webService
1.首先先下载php的webservice包:NuSOAP,自己到官网去下载,链接就不给出来了,自己去google吧 基于NoSOAP我们写了一个php的webservice的服务端,例子如下: ...
- java调用.net的webservice接口
要调用webservice,首先得有接口,用已经写好的接口地址在myEclipse的目标project中,右键->new web service client-> 选择JAX-WS方式,点 ...
- java 调用wsdl的webservice接口 两种调用方式
关于wsdl接口对于我来说是比较头疼的 基本没搞过.一脸懵 就在网上搜 看着写的都很好到我这就不好使了,非常蓝瘦.谨以此随笔纪念我这半个月踩过的坑... 背景:短短两周除了普通开发外我就接到了两个we ...
- Java调用net的webservice故障排除实战分享
转载地址:http://blog.sina.com.cn/s/blog_4c925dca01014y3r.html 前几天公司要接入国外公司的一个业务功能,对方是提供的net产生的webservice ...
- java调用sap的webservice(需要登录验证)
1.Base64.java /* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache ...
- wsdl 生成 java 代码 java 使用CXF将wsdl文件生成客户端代码命令java调用第三方的webservice应用实例 推荐使用, 并且设置了 utf8
推荐使用, 并且设置了 utf8 wsdl2java -p cn.smborderservice -encoding utf-8 -d f:\logink\src -all -autoNameRes ...
随机推荐
- unittest单元测试执行用例的顺序
打印结果如下:
- python3 变量
python 3变量名不能以数字开头但能数字结尾 变量名大小写敏感 在多个单词组成的变量名中以下划线间隔
- [POJ1050]To the Max(最大子段和)
题目链接 http://poj.org/problem?id=1050 题意 求最大子矩阵和. 题解 即求二维的最大子段和.二维数组sumRec[I][j]存储原始数组数据rec[0][j] to r ...
- Java中读取配置文件中的内容,并将其赋值给静态变量的方法
应用场景 项目开发中某个功能需要抽取成方法写成一个工具类,提供给别人使用.写过工具类的人都知道,工具类中的方法一般都是静态方法,可以直接使用类名点方法名调用, 使用很方便,比如判断某个对象是否为空的方 ...
- Node.js使用npm安装模块太慢,解决办法
转自 淘宝 npm 地址: http://npm.taobao.org/ 如何使用 有很多方法来配置npm的registry地址,下面根据不同情境列出几种比较常用的方法.以淘宝npm镜像举例: 1.临 ...
- 快速排序之C实现和JS实现的区别
快速排序是面试中的几乎必问的问题,理解之后发现并不难,在此贴出两种版本,与小伙伴们相互交流 PS:今天码代码非常有感觉,所以连发三篇博客,下午打球,手感也是热的发烫,希望不忘初心,方得始终. 进入正题 ...
- 4.利用GoogleProtoBuffer实现RPC
- IdentityServer4与API单项目整合(net core 3.X)
一.创建一个空的api项目 添加identityserver4的nuget包 配置config文件 public static IEnumerable<IdentityResource> ...
- Java中的常见锁(公平和非公平锁、可重入锁和不可重入锁、自旋锁、独占锁和共享锁)
公平和非公平锁 公平锁:是指多个线程按照申请的顺序来获取值.在并发环境中,每一个线程在获取锁时会先查看此锁维护的等待队列,如果为空,或者当前线程是等待队列的第一个就占有锁,否者就会加入到等待队列中,以 ...
- 刷题[SUCTF 2018]GetShell
解题思路 进入upload,发现有源码,代码审计 代码审计 大概意思就是,读取我们上传的文件,截取第五位之后的内容,与黑名单不匹配才能上传成功 我传的是一个空的txt文件,发现会变成php文件,那好办 ...