передача параметров с использованием ksoap2 в веб-службу .net всегда передает нулевые (пустые) значения

У меня проблема с вызовом веб-служб .net с Android с помощью ksoap2. Вызов выполняется без параметров, но когда я передаю параметры любого типа, веб-служба просто получает нулевое значение. Я пробовал все возможное, но пока не повезло. Я надеюсь, что кто-то может помочь, код на стороне клиента:

 public static boolean temp(){
          try { 

           SoapObject request = new SoapObject(NAMESPACE,METHOD_NAME_TEMP);
           PopertyInfo p = new PropertyInfo();
           p.type = PropertyInfo.INTEGER_CLASS;
           p.setName("num");
           p.setValue(5);
           p.setNamespace(NAMESPACE);
           request.addProperty(p)  ;
           SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11 );
           envelope.dotNet = true;
           envelope.encodingStyle = SoapSerializationEnvelope.ENC;
           envelope.setOutputSoapObject(request);
           AndroidHttpTransport  androidHttpTransport = new AndroidHttpTransport (URL);
           androidHttpTransport.call(SOAP_ACTION_TEMP, envelope);
     .....
             }

     .....

person Fadi    schedule 09.12.2009    source источник


Ответы (3)


Просто хорошо работает для меня таким образом ...

SoapObject requete = new SoapObject(NAMESPACE, METHOD_NAME);

PropertyInfo propertyInfo = new PropertyInfo();
propertyInfo.type = PropertyInfo.INTEGER_CLASS;
propertyInfo.name = "value";
requete.addProperty(propertyInfo, 2);

SoapSerializationEnvelope enveloppe = new SoapSerializationEnvelope(SoapEnvelope.VER11);
enveloppe.dotNet = true;
enveloppe.setOutputSoapObject(requete);

Мой сервер Soap - это служба WCF. Клиент представляет собой эмулятор Android, использующий Ksoap.

person tuxy42    schedule 19.06.2010

У меня была эта проблема, и я мог ее решить. Для ее решения следует рассмотреть следующие настройки:

мой URL-адрес был: "http://"+"MyIP:80/PathTraceWS/SetPathToServer.asmx" (я показал URL-адрес, как указано выше, из-за проверки stackoverflow)

Действие веб-службы было: SetData

    String SOAP_ACTION= "http://"+"tempuri.org/SetData";
    String OPERATION_NAME="SetData";
    String WSDL_TARGET_NAMESPACE="http://"+tempuri.org/";
    String SOAP_ADDRESS="http://"+"192.168.1.54:80/PathTraceWS/SetPathToServer.asmx";

Я считаю, что если вы правильно установите вышеуказанные параметры, ваша проблема будет решена. Мои проблемы были:

1- установить для WSDL_TARGET_NAMESPACE значение "http://"+"tempuri.org", а не "http://"+"tempuri.org/"

2- Если вы вызываете веб-службу с помощью мобильного эмулятора Android, вы не должны использовать локальный хост, а вместо этого вы должны использовать свой системный IP-адрес.

person Pouyan Sepahvand    schedule 15.07.2016

Если у вас есть контроль над веб-службой, попробуйте удалить http:// из имени вашего пространства имен в веб-службе (и обновить все ссылки в коде Java). Это не решение, если вы используете не свой собственный веб-сервис (для этого вы можете попробовать этого обходного пути), но в остальном он работает нормально.

person WearySky    schedule 08.07.2010