第一次用 java 调webervice,网上看了很多博客,能用的没几个,综合几个博客,终于成功调用了。
package com.casco.action;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
public class syncProjectData {
public void syncProject(String projectNo)
{
}
public static void main(String[] args) {
try {
String endpoint = "XXXX?wsdl";
// 直接引用远程的wsdl文件
// 以下都是套路
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(endpoint);
call.setOperationName(new QName("http://tempuri.org/","GetProjectByCondition")); // WSDL里面描述的接口名称
call.addParameter(new QName("http://tempuri.org/","condition"),
org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);// 接口的参数
call.setUseSOAPAction(true);
call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_STRING); //返回参数的类型
call.setSOAPActionURI("http://tempuri.org/GetProjectByCondition"); //这个也要注意 就是要加上要调用的方法GetProjectByCondition,不然也会报错
String temp = "A0117032"; //参数的值
String result = (String) call.invoke(new Object[] { temp });
// 给方法传递参数,并且调用方法
System.out.println("result is " + result);
} catch (Exception e) {
System.err.println(e.toString());
}
}
}