Android ksoap2 svc? Wsdl пространство имен - PullRequest
0 голосов
/ 14 марта 2019

Я пишу приложение для Android, которому нужно 4 параметра, и использую веб-сервис wcf SOAP, используя ksoap2.

Данные, передаваемые веб-службе, должны соответствовать данным, отправляемым из .Net.

Java-код:

private static final String method_name = "PagoMovil.ConsultarArticulo";
// Namespace definido en el servicio web
private static final String name_space = "http://www.domain.mx/pagomovil/pagomovil/";
// namespace + metodo
private static final String soap_action  = "http://www.domain.mx/pagomovil/pagomovil/PagoMovil/ConsultarArticulo";
// Fichero de definicion del servcio web
private static final String wsdl_url  = "http://www.domain.mx/pagomovildev/PagoMovil.svc?wsdl";

 SoapObject soapObject =new SoapObject(name_space,method_name);

    PropertyInfo TipoArticulo = new PropertyInfo();
    TipoArticulo.setName("TipoArticulo");
    TipoArticulo.setValue("M");
    TipoArticulo.setType(String.class);

    soapObject.addProperty(TipoArticulo);

    PropertyInfo ClaveArticulo = new PropertyInfo();
    ClaveArticulo.setName("ClaveArticulo");
    ClaveArticulo.setValue("122-2");
    ClaveArticulo.setType(String.class);

    soapObject.addProperty(ClaveArticulo);

    PropertyInfo Usuario = new PropertyInfo();
    Usuario.setName("Usuario");
    Usuario.setValue("USUARIOS");
    Usuario.setType(String.class);

    soapObject.addProperty(Usuario);

    PropertyInfo Password = new PropertyInfo();
    Password.setName("Password");
    Password.setValue("CLAVES");
    Password.setType(String.class);

    soapObject.addProperty(Password);


    SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER10);
    envelope.dotNet=true;
    envelope.setOutputSoapObject(soapObject);
    HttpTransportSE httpTransportSE=new HttpTransportSE(wsdl_url);

    try {
        httpTransportSE.call(soap_action,envelope);
        SoapObject result=(SoapObject) envelope.bodyIn;

       String resultado= result.getProperty(0).toString();

    } catch (IOException e) {
        e.printStackTrace();
    } catch (XmlPullParserException e) {
        e.printStackTrace();
    }

Это тот XML, который необходим веб-сервису:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://www.domain.mx/pagomovil/pagomovil/PagoMovil/ConsultarArticulo</Action>
  </s:Header>
  <s:Body>
    <ConsultarArticulo xmlns="http://www.domain.mx/pagomovil/pagomovil">
      <pvRequest xmlns:d4p1="http://www.domain.mx/pagomovil/pagomovil" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="">
        <d4p1:TipoArticulo>M</d4p1:TipoArticulo>
        <d4p1:ClaveArticulo>122-2</d4p1:ClaveArticulo>
        <d4p1:Usuario>USUARIO</d4p1:Usuario>
        <d4p1:Password>CLAVE</d4p1:Password>
      </pvRequest>
    </ConsultarArticulo>
  </s:Body>
</s:Envelope>

Мой код в java возвращает "anytype {}" без каких-либо данных, я думаю, что когда я устанавливаю имя и значение, propertyinfo не получает значений.

Как я могу структурировать свой код для правильной работы веб-службы?

...