简单的webservice客户端测试代码

下面的代码描述了一个简单的客户端调用webservice的测试代码

import javax.xml.namespace.QName;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

import com.demo.webservice.WebServiceParam;

/**
 * <p> Title: webservice测试公共类</p>
 * <p> Description: </p>
 * <p> Copyright: Copyright (c) 2012 2012-2-13</p>
 * <p> Company: pccw</p>
 * @author xuwh
 * @version 1.0
 */
public class WebServiceClientTest {
 
 public static void main(String args[])
 {
  // 服务端webservice地址
  String endpoint = "http://localhost:8080/sshdemo/services/UserWebService";

  // 定义服务端webservice调用的方法名称opName
  String opName = "getUserNameById";
  WebServiceParam[] params = new WebServiceParam[1];
  // 可以定义多个WebServiceParam对象表示多个参数
  WebServiceParam p1 = new WebServiceParam();
  // 定义服务端webservice调用方法的参数名称以及值
  p1.setParamName("userId");
  p1.setParamValue("402881cc3564decb01356510df090004");
  QName qName = org.apache.axis.encoding.XMLType.XSD_STRING;
  p1.setqName(qName);
  params[0] = p1;
  String str="";
  try {
   str = getStringByWebService(endpoint, opName, params);
   System.out.println("==webService Result==" + str);
  } catch (Exception e) {
   str = "异常";
   System.out.println("==webService error=str=" + str);
  }
 }

 /**
  * <p>
  * Description:调用返回值是string类型的webservice
  * <p>
  * @param endpoint
  * @param opName
  * @param params
  */
 public static String getStringByWebService(String endpoint, String opName,
   WebServiceParam[] params) throws Exception {
  try {
   String res = null;
   Service service = new Service();
   Call call = (Call) service.createCall();
   call.setTargetEndpointAddress(new java.net.URL(endpoint));
   for (int i = 0; i < params.length; i++) {
    call.addParameter(params[i].getParamName(), params[i].getqName(),
      javax.xml.rpc.ParameterMode.IN);
   }
   call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
   call.setOperationName(new QName("http://localhost:8080/sshdemo/services/" + opName,
     opName));
   call.setUseSOAPAction(true);
   //call.setSOAPActionURI("http://localhost:8080/sshdemo/services/" + opName + "/Rpc");
   call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
   Object o[] = new Object[params.length];
   for (int i = 0; i < params.length; i++) {
    o[i] = params[i].getParamValue();
   }
   res = (String) call.invoke(o);
   return res;
  } catch (Exception e) {
   throw e;
  }

 }

}

/**
 * <p> Title: 调用webservice的参数配置对象</p>
 * <p> Description: </p>
 * <p> Copyright: Copyright (c) 2012 2012-2-13</p>

 * @version 1.0
 */

public class WebServiceParam {
 private String paramName;
 private Object paramValue;
 private QName qName;
 
 public WebServiceParam(){}

 public WebServiceParam(String paramName,String paramValue,QName qName){
  this.paramName = paramName;
  this.paramValue = paramValue;
  this.qName = qName;
 }
 
 
 public QName getqName() {
  return qName;
 }

 public void setqName(QName qName) {
  this.qName = qName;
 }

 public String getParamName() {
  return paramName;
 }

 public void setParamName(String paramName) {
  this.paramName = paramName;
 }

 public Object getParamValue() {
  return paramValue;
 }

 public void setParamValue(Object paramValue) {
  this.paramValue = paramValue;
 }
 
}

猜你喜欢

转载自pacer123.iteye.com/blog/1129839
今日推荐