我正在调用的.net方法只会返回传递给它的值。因此,如果我用parm1 =“hello”和parm2 =“123”调用方法“TestMe”,我应该得到的响应是Hello。收到----> [parm1] hello [int1] 123.我可以通过firefox通过WSDL调用方法来验证这个响应。
当我尝试通过invoke()调用调用相同的方法时,我得到[parm1] [int1] 0。
对我来说,似乎.net方法没有接收任何参数值,只是返回字符串和整数类型的默认值。那么,我需要更改为.net Web服务以获得有效响应,还是需要在java代码中添加其他东西(对于我的BB应用程序)?
我使用eclipse作为编辑器,jdk1.16.0_017作为JRE
import org.apache.axis.AxisFault; import org.apache.axis.client.Call; import org.apache.axis.client.Service;
String endpoint = "http://[SERVER]/wsBB/clsMyFunctions.asmx?WSDL";
String methodName = "TestMe";
String actionURI = "http://www.blahblahblah.com/TestMe";
// set a SOAP call
try {
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress( new java.net.URL( endpoint ) );
call.setUseSOAPAction(true);
call.setSOAPActionURI(actionURI);
call.setOperation(methodName);
String ret = (String) call.invoke( new Object[]{"Hello!","1234"} );
System.out.println("Sent 'Hellooooooooooo!', got '" + ret + "'");
}
catch( AxisFault af ) {
System.out.println("dump: "+ af.dumpToString());
}
catch(Exception e)
{
System.out.println("EXCPETION: "+ e.toString());
}
答案 0 :(得分:1)
假设您掌控了网络服务,我强烈建议您使用Wireshark(或类似的东西)来查看请求和响应的样子 - 以及它们是什么就像你从浏览器或其他网络服务客户端尝试同样的事情一样。
通过这种方式,您应该了解问题是与请求或响应有关,以及问题的性质。
我还会从一个简单的Java控制台应用程序中尝试相同的代码 - 在让Blackberry参与之前让它在那里工作。