服务端是 AXIS ,自己用xfire写了一个客户端,我是把 WSDL 文件copy到本地叫xfire去访问
public void testClient() throws Exception {
String wsdl = "DoBeanService.wsdl" ; // 对应的WSDL文件
ClassPathResource resource = new ClassPathResource(wsdl);
Client client = new Client(resource.getInputStream(),null); // 根据WSDL创建客户实例
Object[] objArray = new Object[8];
objArray[0] = "-1" ;
objArray[1] = "-1" ;
objArray[2] = "FWZL" ;
objArray[3] = "FWZL_TEST" ;
objArray[4] = "X0001" ;
objArray[5] = "0" ;
objArray[6] = "WWW.SOHU.COM" ;
objArray[7] = "FWZL" ;
// 调用特定的Web Service方法
Object[] results = client.invoke( "saveData" , objArray);
System.out.println( "result:====" + results[0]);
} <wsdl:message name="saveDataRequest">
<wsdl:part name="taskid" type="soapenc:string" />
<wsdl:part name="processid" type="soapenc:string" />
<wsdl:part name="type" type="soapenc:string" />
<wsdl:part name="title" type="soapenc:string" />
<wsdl:part name="executor" type="soapenc:string" />
<wsdl:part name="flag" type="soapenc:string" />
<wsdl:part name="link" type="soapenc:string" />
<wsdl:part name="inId" type="soapenc:string" />
</wsdl:message>
Exception in thread "main" org.codehaus.xfire.fault.XFireFault: For input string: ""
at org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:89)
at org.codehaus.xfire.client.Client.onReceive(Client.java:410)
at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:139)
at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48)
at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
at org.codehaus.xfire.client.Client.invoke(Client.java:336)
at org.codehaus.xfire.client.Client.invoke(Client.java:368)
at com.szair.fwzl.webservice.Impl.testNew.testClient(testNew.java:30)
at com.szair.fwzl.webservice.Impl.testNew.main(testNew.java:12)
Caused by: java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:468)
at java.lang.Integer.parseInt(Integer.java:497)
at org.codehaus.xfire.aegis.AbstractMessageReader.getValueAsInt(AbstractMessageReader.java:68)
at org.codehaus.xfire.aegis.type.basic.IntType.readObject(IntType.java:18)
at org.codehaus.xfire.aegis.AegisBindingProvider.readParameter(AegisBindingProvider.java:169)
at org.codehaus.xfire.service.binding.RPCBinding.readMessage(RPCBinding.java:91)
at org.codehaus.xfire.soap.handler.SoapBodyHandler.invoke(SoapBodyHandler.java:42)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at org.codehaus.xfire.client.Client.onReceive(Client.java:406)
... 10 more
public void testClient() throws Exception {
String wsdl = "DoBeanService.wsdl" ; // 对应的WSDL文件
ClassPathResource resource = new ClassPathResource(wsdl);
Client client = new Client(resource.getInputStream(),null); // 根据WSDL创建客户实例
Object[] objArray = new Object[8];
objArray[0] = "-1" ;
objArray[1] = "-1" ;
objArray[2] = "FWZL" ;
objArray[3] = "FWZL_TEST" ;
objArray[4] = "X0001" ;
objArray[5] = "0" ;
objArray[6] = "WWW.SOHU.COM" ;
objArray[7] = "FWZL" ;
// 调用特定的Web Service方法
Object[] results = client.invoke( "saveData" , objArray);
System.out.println( "result:====" + results[0]);
} <wsdl:message name="saveDataRequest">
<wsdl:part name="taskid" type="soapenc:string" />
<wsdl:part name="processid" type="soapenc:string" />
<wsdl:part name="type" type="soapenc:string" />
<wsdl:part name="title" type="soapenc:string" />
<wsdl:part name="executor" type="soapenc:string" />
<wsdl:part name="flag" type="soapenc:string" />
<wsdl:part name="link" type="soapenc:string" />
<wsdl:part name="inId" type="soapenc:string" />
</wsdl:message>
Exception in thread "main" org.codehaus.xfire.fault.XFireFault: For input string: ""
at org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:89)
at org.codehaus.xfire.client.Client.onReceive(Client.java:410)
at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:139)
at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48)
at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
at org.codehaus.xfire.client.Client.invoke(Client.java:336)
at org.codehaus.xfire.client.Client.invoke(Client.java:368)
at com.szair.fwzl.webservice.Impl.testNew.testClient(testNew.java:30)
at com.szair.fwzl.webservice.Impl.testNew.main(testNew.java:12)
Caused by: java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:468)
at java.lang.Integer.parseInt(Integer.java:497)
at org.codehaus.xfire.aegis.AbstractMessageReader.getValueAsInt(AbstractMessageReader.java:68)
at org.codehaus.xfire.aegis.type.basic.IntType.readObject(IntType.java:18)
at org.codehaus.xfire.aegis.AegisBindingProvider.readParameter(AegisBindingProvider.java:169)
at org.codehaus.xfire.service.binding.RPCBinding.readMessage(RPCBinding.java:91)
at org.codehaus.xfire.soap.handler.SoapBodyHandler.invoke(SoapBodyHandler.java:42)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at org.codehaus.xfire.client.Client.onReceive(Client.java:406)
... 10 more
参数都已经写出来了啊,确实是STRING类型的
String a = "";
System.out.println(Integer.parseInt(a));
就会
ception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at csdn.Afdf.main(Afdf.java:6)
xfire没用过。objArray 只能使用Object[]吗?如果不是的话全部换成别的类型如String[]测试一下,注意与服务端方法类型保持一致,试试看。
For input string: "" 这个东西到底是怎么出来的