码迷,mamicode.com
首页 > 编程语言 > 详细

java axis调用WebService 服务端,客户端

时间:2015-12-29 06:31:10      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:java axis webservice服务端   客户端   

服务端:

1、Calculator

package ws;


public class Calculator {

public int add(int a, int b) {

return (a + b);

}


public int subtract(int a, int b) {

return (a - b);

}


public int multiply(int a, int b) {

return (a * b);

}


public int divide(int a, int b) {

return (a / b);

}


}

生成wsdl见附件


客户端:

2、引入axis的jar包

3、Test01

package Test;


import javax.xml.namespace.QName;


import org.apache.axis2.addressing.EndpointReference;

import org.apache.axis2.client.Options;

import org.apache.axis2.rpc.client.RPCServiceClient;


public class Test01 {


public static void main(String[] args) {

String url = "http://localhost:8080/WebserviceTest/services/Calculator";

String result = null;

try {

//使用RPC方式调用WebService

RPCServiceClient serviceClient = new RPCServiceClient();

Options options = serviceClient.getOptions();

//使用RPC方式调用WebService

EndpointReference targetEPR = new EndpointReference(url);

options.setTo(targetEPR);

// 在创建QName对象时,QName类的构造方法的第一个参数表示WSDL文件的命名空间名,也就是<wsdl:definitions>元素的targetNamespace属性值

//指定要调用的add方法及WSDL文件的命名空间.....

QName add = new QName("http://csh.bzu.com","add");

// 指定add方法的参数值,如果有多个,继续往后面增加即可,不用指定参数的名称

Object[] opAddEntryArgs = new Object[] { 2, 3};

//返回参数类型

//invokeBlocking方法有三个参数,其中第一个参数的类型是QName对象,表示要调用的方法名;

//第二个参数表示要调用的WebService方法的参数值,参数类型为Object[];

//第三个参数表示WebService方法的返回值类型的Class对象,参数类型为Class[]。

//当方法没有参数时,invokeBlocking方法的第二个参数值不能是null,而要使用new Object[]{}

// 如果被调用的WebService方法没有返回值,应使用RPCServiceClient类的invokeRobust方法,

// 该方法只有两个参数,它们的含义与invokeBlocking方法的前两个参数的含义相同

// 指定getGreeting方法返回值的数据类型的Class对象.....

Class[] classes = new Class[] { String.class };

// 调用add方法并输出该方法的返回值.......

result = (String) serviceClient.invokeBlocking(add, opAddEntryArgs,classes)[0];

System.out.println("the add result is:"+ result);

// 下面是调用subtract方法的代码,这些代码与调用getWorld方法的代码类似

QName subtract = new QName("http://csh.bzu.com","subtract");

Object[] opAddEntryArgs1 = new Object[] { 2, 3};


Class[] classes1 = new Class[] { String.class };

result = (String) serviceClient.invokeBlocking(subtract, opAddEntryArgs1,classes1)[0];

System.out.println("the subtract result is:"+ result);

// 下面是调用multiply方法的代码,这些代码与调用getWorld方法的代码类似

QName multiply = new QName("http://csh.bzu.com","multiply");

Object[] opAddEntryArgs2 = new Object[] { 2, 3};

Class[] classes2 = new Class[] { String.class };

result = (String) serviceClient.invokeBlocking(multiply, opAddEntryArgs2,classes2)[0];

System.out.println("the multiply result is:"+ result);

// 下面是调用divide方法的代码,这些代码与调用getWorld方法的代码类似

QName divide = new QName("http://csh.bzu.com","divide");

Object[] opAddEntryArgs3 = new Object[] { 2, 3};

Class[] classes3 = new Class[] { String.class };

result = (String) serviceClient.invokeBlocking(divide, opAddEntryArgs3,classes3)[0];

System.out.println("the divide result is:"+ result);

} catch (Exception e) {

e.printStackTrace();

}

}

}





本文出自 “数据库攻城狮” 博客,请务必保留此出处http://liu16.blog.51cto.com/6494747/1729324

java axis调用WebService 服务端,客户端

标签:java axis webservice服务端   客户端   

原文地址:http://liu16.blog.51cto.com/6494747/1729324

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!