繁体   English   中英

从Blackberry Eclipse项目错误中调用.NET Web服务

[英]Calling .NET web service from blackberry eclipse project error

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

我正在调用的.net方法将仅返回我传递给它的值。 因此,如果我用parm1 =“ hello”和parm2 =“ 123”调用方法“ TestMe”,我应该得到的响应是Hello。 收到----> [parm1]你好[int1]123。我可以通过通过Firefox通过WSDL调用该方法来验证此响应。

当我尝试通过invoke()调用调用同一方法时,我得到[parm1] [int1] 0。

在我看来,.net方法似乎没有接收任何参数值,而只是返回字符串和整数类型的默认值。 因此,是否需要更改为.net Web服务以获得有效的响应,还是需要向Java代码中添加其他内容(对于BB应用程序)?

我使用eclipse作为编辑器,使用jdk1.16.0_017作为JRE

导入org.apache.axis.AxisFault; 导入org.apache.axis.client.Call; 导入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());
 }

假设您控制着Web服务,我强烈建议您使用Wireshark (或类似工具)查看请求和响应的外观-以及从浏览器尝试相同操作时的外观和效果,或者来自另一个Web服务客户端。

这样,您应该可以知道问题出在请求还是响应以及问题的性质。

我还将尝试通过一个简单的Java控制台应用程序执行相同的代码-在涉及Blackberry之前使其在此处运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM