zoukankan      html  css  js  c++  java
  • WebService学习

    参考:http://www.cnblogs.com/xwdreamer/archive/2011/12/07/2296914.html

    http://cxshun.iteye.com/blog/1275408

    去官网下载包WebService所需要的包:http://axis.apache.org/axis2/java/core/modules/index.html

    配置WebService所在的包

    新建一个动态web工程

    代码如下:

    package main;
    
    /**
     * 计算器运算
     * 
     */
    public class CalculateService {
    	// 加法
    	public float plus(float x, float y) {
    		return x + y;
    	}
    
    	// 减法
    	public float minus(float x, float y) {
    		return x - y;
    	}
    
    	// 乘法
    	public float multiply(float x, float y) {
    		return x * y;
    	}
    
    	// 除法
    	public float divide(float x, float y) {
    		if (y != 0) {
    			return x / y;
    		} else
    			return -1;
    	}
    }
    

     新建一个WebService

     

    会自动生成:

    我们新建一个MyWebServiceTest.java,代码如下:

    package main;
    
    import javax.xml.namespace.QName;
    import org.apache.axis2.AxisFault;
    import org.apache.axis2.addressing.EndpointReference;
    import org.apache.axis2.client.Options;
    import org.apache.axis2.rpc.client.RPCServiceClient;
    
    public class MyWebServiceTest {
    
    	/**
    	 * @param args
    	 * @throws AxisFault
    	 */
    	public static void main(String[] args) throws AxisFault {
    		// TODO Auto-generated method stub
    
    		// 使用RPC方式调用WebService
    		RPCServiceClient serviceClient = new RPCServiceClient();
    		Options options = serviceClient.getOptions();
    		// 指定调用WebService的URL
    		EndpointReference targetEPR = new EndpointReference(
    				"http://localhost:8080/MyWebService/services/CalculateService");
    		options.setTo(targetEPR);
    
    		// 指定要调用的计算机器中的方法及WSDL文件的命名空间:main
    		QName opAddEntry = new QName("http://main", "plus");// 加法
    		QName opAddEntryminus = new QName("http://main", "minus");// 减法
    		QName opAddEntrymultiply = new QName("http://main", "multiply");// 乘法
    		QName opAddEntrydivide = new QName("http://main", "divide");// 除法
    		// 指定plus方法的参数值为两个,分别是加数和被加数
    		Object[] opAddEntryArgs = new Object[] { 1, 2 };
    		// 指定plus方法返回值的数据类型的Class对象
    		Class[] classes = new Class[] { float.class };
    		// 调用plus方法并输出该方法的返回值
    		System.out.println(serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, classes)[0]);
    		System.out.println(serviceClient.invokeBlocking(opAddEntryminus, opAddEntryArgs, classes)[0]);
    		System.out.println(serviceClient.invokeBlocking(opAddEntrymultiply, opAddEntryArgs, classes)[0]);
    		System.out.println(serviceClient.invokeBlocking(opAddEntrydivide, opAddEntryArgs, classes)[0]);
    
    	}
    }
    

      运行下上段代码就会出结果,如果程序报错,应该是对应的http://main改成自己的WSDL文件的命名空间,或者导入所需要的包,包在axis2-1.6.3lib目录下。

  • 相关阅读:
    Git衍合和合并区别
    Git开发流程
    AJAX用户注册演示程序
    PHP常用MySql操作
    轻描淡写
    浅谈web后门隐藏与检测思路
    PHP代码审计和漏洞挖掘的一点思考
    Android Split的用法
    Android 动态显示时间
    Java 获取字符长度
  • 原文地址:https://www.cnblogs.com/JAYIT/p/4727673.html
Copyright © 2011-2022 走看看