调用webservice例子

现在单位突然要用短信平台,短信平台给个客户端程序,这哪符合我们单位IT系统统一管理的国情啊。没法子,再三询问,他们说提供webservice接口。我吓的一身冷汗。。这玩意从来没用过啊。

最后还是依靠本人强大的搜索能力,解决了问题,成功调用了webservice

步骤如下:

1.到apache网站下载axis包。

2.利用里面的wsdl2java来自动生成对应的类和实体。有一个很好的bat文件,可以帮助你生成.java文件。

set Axis_Lib=E:/工作/axis_test/axis-1_4/lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=E:/工作/axis_test/test/src
set Package=server.SayHello
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o %Output_Path% -p%Package% http://localhost:8080/ema/services/SmsNewOperator?wsdl

3.生成一大堆的类和文件,到底如何调用呢。我们看到,大体有5个文件,如下图

其中Service是一个接口,Stub是一个代理类,要调用webservice,只需要用stub调用相应webservice的方法即可。

但是,切忌,这里不要直接new一个stub,会出现“no endpoint”异常!

4.最简单的调用办法是,用接口定义一个service变量,new个Locator类,然后用service.getSmsNewOperator()方法获得一个webservice的代理类,具体调用代码如下:

package com.message;

import java.rmi.RemoteException;

import javax.xml.rpc.ServiceException;
import javax.xml.rpc.holders.StringHolder;

import org.apache.axis.AxisFault;

import com.util.MD5;

public class Test
{
 public static void main(String [] s) throws RemoteException, ServiceException
 {
  //初始化webservice代理类
  SmsNewOperatorService service = new SmsNewOperatorServiceLocator();
  SmsNewOperatorSoapBindingStub sms = (SmsNewOperatorSoapBindingStub) service.getSmsNewOperator();
  
  //准备数据
  MtNewMessage ms = new MtNewMessage();
  ms.setContent("你好~~");
  ms.setPhoneNumber("1390000000");
  StringHolder sendResMsg = new StringHolder();
  StringHolder errMsg = new StringHolder();
  
  //调用webservice
  sms.sendSms("000000000", MD5.md5s("000000000"), ms, sendResMsg, errMsg);
  
  //打印返回值
  System.out.println("sendResMsg = " + sendResMsg.value);
  System.out.println("errMsg = " + errMsg.value);
 }
}

你可能感兴趣的:(调用webservice例子)