下面的代码描述了一个简单的客户端调用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;
}
}