在用axis编写客户端的时候出现一个doesn't match the number of IN/INOUT parameters错误。
我的客户端代码如下:
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.encoding.XMLType;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
/*
* Created on 2004-8-24
*
* To change the template for this generated file go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
/**
* @author Administrator
*
* To change the template for this generated type comment go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
public class TestClient {
public static void main(String[] args) {
try
{
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress( new java.net.URL("http://192.168.123.8:8080/axis/Calculator.jws?wsdl") );
call.setOperationName( new QName("Calculator", "addMailUser") );
call.addParameter( "username", XMLType.XSD_STRING , ParameterMode.IN);
call.addParameter( "password", XMLType.XSD_STRING , ParameterMode.IN);
call.addParameter( "question", XMLType.XSD_STRING , ParameterMode.IN);
call.addParameter( "answer", XMLType.XSD_STRING , ParameterMode.IN);
call.setReturnType( XMLType.XSD_INT );
String[] c={"1","2","3","4"};
call.invoke( new Object[] { c } );
System.out.println("You typed : ");
}
catch (Exception e)
{
System.err.println(e.toString());
}
}
}
在运行到call.invoke( new Object[] { c } );时catch到的错误如下,我把ParameterMode.IN改成ParameterMode.INOUT也是一样:
Error invoking operation:
javax.xml.rpc.JAXRPCException: Number of parameters passed in (1) doesn't match the number of IN/INOUT parameters (4) from the addParameter() calls