所需jar包:
package service;
import java.nio.charset.Charset;
import java.rmi.RemoteException;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;
importorg.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
public class Ws {
public static void main(String[] args)
{
try
{
Service service = new Service();
Call call = (Call)service.createCall();
//添加调用地址
call.setTargetEndpointAddress("http://192.168.1.102:10010/wscplus.wsdl");
// 设置调用的接口,指定输入参数,输出参数
call.setOperationName(new QName("urn:wscplus", "hellowebservice"));
call.addParameter("param", XMLType.XSD_STRING,ParameterMode.IN);
call.addParameter("result", XMLType.XSD_STRING, ParameterMode.OUT);
call.addParameter("value", XMLType.XSD_STRING, ParameterMode.OUT);
//定义返回值的格式,第一个参数为命名空间,第二个参数为返回值类型,这里需要注意的是返回值的类型是webservice开发商提供,我们需要与其保持一致
call.setReturnType(XMLType.XSD_STRING);
String str = "测试参数";
String strParam = new String(str.getBytes(Charset.forName("UTF-8")));
//进行调用传入对应入参的值,并且将返回的对象转换为字符串。
String result = (String)call.invoke(new Object[]{strParam});
String value = (String)call.invoke(new Object[]{strParam});
System.out.println("获取C++服务端返回值result为———— " + result+"______________"+"value为"+value);
}
catch (ServiceException e)
{
e.printStackTrace();
}
catch (RemoteException e)
{
System.out.println("服务器未启动");
}
}
}