Foros del Web » Programando para Internet » Android »

Error SoapFault al consumir webservice en Android con Ksoap2

Estas en el tema de Error SoapFault al consumir webservice en Android con Ksoap2 en el foro de Android en Foros del Web. Hola, soy nuevo en el foro, y desde ya agradezco cualquier ayuda que me puedan dar. Tengo una aplicación android que debe consumir un WebService ...
  #1 (permalink)  
Antiguo 30/04/2012, 09:08
 
Fecha de Ingreso: febrero-2011
Mensajes: 2
Antigüedad: 13 años, 10 meses
Puntos: 0
Exclamación Error SoapFault al consumir webservice en Android con Ksoap2

Hola, soy nuevo en el foro, y desde ya agradezco cualquier ayuda que me puedan dar. Tengo una aplicación android que debe consumir un WebService hecho en JAVA. Uso KSOAP2 para esto. Antes usaba un Wservice en .Net y funcionaba sin problemas. Sin embargo, ahora que tuve que cambiarlo por este otro Wservice en JAVA, no funciona, y devuelve el siguiente error:

Código:
java.lang.NoSuchMethodException: no such method 'getSiniestrosPorLiquidador' on class com.mag.sin.ws.__SiniestroWsPhotoStatelessWrapper at com.mag.sin.ws.__SiniestroWsPhotoStatelessWrapper.invokeMethod(__SiniestroWsPhotoStatelessWrapper.java:188)
El código usado es este:
Código:
public Object getCasos(String IdCaso, String RutInspector)
{

      Object result=null;
    try {
          SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
          //request.addProperty("IdCaso", IdCaso);
          request.addProperty("p_idLiquidador", RutInspector);
          request.addProperty("p_idEmpresa", "1");
          request.addProperty("p_nombreAplicacion", "SINIESTRO");
          SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
          //envelope.dotNet=false;
          envelope.setOutputSoapObject(request);
          HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
          //envelope.addMapping(NAMESPACE, "IdCasos",new IdCasos().getClass());
          androidHttpTransport.call(SOAP_ACTION, envelope);

          result = envelope.getResponse();

    } catch (Exception e) {
        return null;

        }
    return result;
}
Estos son los parámetros:
Código:
NAMESPACE=http://com/mag/sin/ws/SiniestroWsPhoto.wsdl
METHOD=getSiniestrosPorLiquidador
RutInspector = "236"
SOAPACTION=http://com/mag/sin/ws/SiniestroWsPhoto.wsdl/getSiniestrosPorLiquidador
IdCaso es irrelevante
URL=http://magapp.magallanes.cl/WebServices/SiniestroWsPhoto?WSDL
Este es el WSDL
Código:
<!--
Generated by the Oracle JDeveloper 10g Web Services WSDL Generator
-->
<!-- Date Created: Thu Apr 12 16:59:55 VET 2012 -->
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"xmlns:tns="http://com/mag/sin/ws/SiniestroWsPhoto.wsdl" xmlns:ns1="http://com.mag.sin.ws/ISiniestroWsPhoto.xsd" name="SiniestroWsPhoto"targetNamespace="http://com/mag/sin/ws/SiniestroWsPhoto.wsdl">
<types>
<ns0:schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns0="http://schemas.xmlsoap.org/wsdl/"targetNamespace="http://com.mag.sin.ws/ISiniestroWsPhoto.xsd"/>
</types>
<message name="getSiniestrosPorLiquidador0Request">
<part name="p_idLiquidador" type="xsd:string"/>
<part name="p_idEmpresa" type="xsd:int"/>
<part name="p_nombreAplicacion" type="xsd:string"/>
</message>
<message name="getSiniestrosPorLiquidador0Response">
<part name="return" type="xsd:string"/>
</message>
<message name="actualizarFechaFoto1Request">
<part name="denFolio" type="xsd:int"/>
<part name="p_involucrado" type="xsd:int"/>
<part name="p_idLiquidador" type="xsd:string"/>
<part name="p_idEmpresa" type="xsd:int"/>
<part name="p_nombreAplicacion" type="xsd:string"/>
</message>
<message name="actualizarFechaFoto1Response">
<part name="return" type="xsd:string"/>
</message>
<message name="getValidarUsuario2Request">
<part name="p_usuId" type="xsd:string"/>
</message>
<message name="getValidarUsuario2Response">
<part name="return" type="xsd:int"/>
</message>
<portType name="SiniestroWsPhotoPortType">
<operation name="getSiniestrosPorLiquidador">
<input name="getSiniestrosPorLiquidador0Request" message="tns:getSiniestrosPorLiquidador0Request"/>
<output name="getSiniestrosPorLiquidador0Response" message="tns:getSiniestrosPorLiquidador0Response"/>
</operation>
<operation name="actualizarFechaFoto">
<input name="actualizarFechaFoto1Request" message="tns:actualizarFechaFoto1Request"/>
<output name="actualizarFechaFoto1Response" message="tns:actualizarFechaFoto1Response"/>
</operation>
<operation name="getValidarUsuario">
<input name="getValidarUsuario2Request" message="tns:getValidarUsuario2Request"/>
<output name="getValidarUsuario2Response" message="tns:getValidarUsuario2Response"/>
</operation>
</portType>
<binding name="SiniestroWsPhotoBinding" type="tns:SiniestroWsPhotoPortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getSiniestrosPorLiquidador">
<soap:operation soapAction="" style="rpc"/>
<input name="getSiniestrosPorLiquidador0Request">
<soap:body use="encoded" namespace="SiniestroWsPhoto" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output name="getSiniestrosPorLiquidador0Response">
<soap:body use="encoded" namespace="SiniestroWsPhoto" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="actualizarFechaFoto">
<soap:operation soapAction="" style="rpc"/>
<input name="actualizarFechaFoto1Request">
<soap:body use="encoded" namespace="SiniestroWsPhoto" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output name="actualizarFechaFoto1Response">
<soap:body use="encoded" namespace="SiniestroWsPhoto" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="getValidarUsuario">
<soap:operation soapAction="" style="rpc"/>
<input name="getValidarUsuario2Request">
<soap:body use="encoded" namespace="SiniestroWsPhoto" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output name="getValidarUsuario2Response">
<soap:body use="encoded" namespace="SiniestroWsPhoto" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<service name="SiniestroWsPhoto">
<port name="SiniestroWsPhotoPort" binding="tns:SiniestroWsPhotoBinding">
<soap:address location="http://magapp.magallanes.cl/siniestroWs/SiniestroWsPhoto"/>
</port>
</service>
</definitions>
No entiendo el error, ya que el nombre que uso para el método es el correcto. A todo esto, tengo permitido el acceso a internet en en archivo AndroidManifest.xml

Por favor ayúdenme no se que pueda ser el error. Gracias
  #2 (permalink)  
Antiguo 30/04/2012, 09:29
 
Fecha de Ingreso: febrero-2011
Mensajes: 2
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Error SoapFault al consumir webservice en Android con Ksoap2

Logré encontrar finalmente la solución. Era bastante sencillo, pero no la podía encontrar:
El parámetro de entrada p_idEmpresa es tipo int, sin embargo lo estaba mandando entre comillas dobles, por lo que lo tomaba como string

Era

request.addProperty("p_idEmpresa", 1);

en vez de

request.addProperty("p_idEmpresa", "1");

Etiquetas: java, ksoap2, soap, soapfault, webservice, wsdl
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:49.