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

1

У меня проблема с вызовом .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);
     .....
             }

     .....
Теги:
service
ksoap2

3 ответа

1

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

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

Действие веб-службы: SetData​​p >

    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, вы не должны использовать localhost, и вместо этого вы должны использовать свой IP-адрес системы

1

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

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..

0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню