Вызов веб-службы .NET из-за ошибки проекта Blackberry Eclipse - PullRequest
0 голосов
/ 27 января 2010

Я не могу понять, что я делаю неправильно. я просто пытаюсь вызвать метод веб-службы .net из моего приложения BB. Когда я вызываю метод, который НЕ требует параметров, я получаю правильный строковый ответ, и все довольны. однако, когда я вызываю метод, требующий параметров (и передаю эти параметры в вызове invoke ()), я получаю тот же нулевой ответ (значения по умолчанию для строки и целого числа).

метод .net, который я вызываю, просто возвращает значения, которые я ему передал. поэтому, если я вызываю метод "TestMe" с parm1 = "hello" и parm2 = "123", ответ, который я должен получить, - Hello. Получено ----> [parm1] hello [int1] 123. Я могу проверить этот ответ, просто вызвав метод через WSDL через firefox.

когда я пытаюсь вызвать тот же метод с помощью вызова invoke (), я получаю [parm1] [int1] 0.

мне кажется, что метод .net не получает никаких значений параметров и просто возвращает значения по умолчанию для строковых и целочисленных типов. Итак, есть ли что-то, что мне нужно изменить на веб-службу .net, чтобы получить действительный ответ, или мне нужно добавить что-то еще в код 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 Ответ

1 голос
/ 27 января 2010

Предполагая, что вы контролируете веб-сервис, я настоятельно рекомендую использовать Wireshark (или что-то подобное), чтобы увидеть, как выглядят запрос и ответ - и что они похожи, когда вы пытаетесь сделать то же самое из браузера или другого клиента веб-службы.

Таким образом, вы должны получить некоторое представление о том, связана ли проблема с запросом или ответом, и о характере этой проблемы.

Я бы также попробовал тот же код из простого консольного Java-приложения - включите его, прежде чем подключать Blackberry.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...