从blackberry eclipse项目错误调用.NET Web服务

时间:2010-01-27 17:43:27

标签: java .net blackberry web-services

我似乎无法弄清楚我做错了什么。我只是试图从我的BB应用程序调用.net Web服务方法。当我调用一个不需要参数的方法时,我得到一个有效的字符串响应,每个人都很高兴。但是,当我调用一个需要参数的方法(并且我在invoke()调用中传递这些参数)时,我得到相同的空响应(字符串和整数的默认值)。

我正在调用的.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());
 }

1 个答案:

答案 0 :(得分:1)

假设您掌控了网络服务,我强烈建议您使用Wireshark(或类似的东西)来查看请求和响应的样子 - 以及它们是什么就像你从浏览器或其他网络服务客户端尝试同样的事情一样。

通过这种方式,您应该了解问题是与请求或响应有关,以及问题的性质。

我还会从一个简单的Java控制台应用程序中尝试相同的代码 - 在让Blackberry参与之前让它在那里工作。