Pregunta

he visto temas discutiendo esto, pero nadie se ha parecido a publicar una solución. Por el momento, estoy probando el paso de parámetros a mi servicio web .Net. Cuando los parámetros alcanzan el servicio web que añade con una cadena adicional después vuelve demasiado mi solicitud; pero todo lo que estoy volviendo es el mensaje de cadena, no el parámetro pasé. ¿Hay algo malo con mi servicio web o mi método jabón?

Jabón:

  

solicitud SoapObject = new SoapObject (NAMESPACE, METHOD_NAME);

    request.addProperty("A", "workowr");


    SoapSerializationEnvelope envelope =
        new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet = true;
        envelope.setOutputSoapObject(request);
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);    
        try {
            androidHttpTransport.call(SOAP_ACTION, envelope);
            SoapPrimitive result = (SoapPrimitive) envelope.getResponse();
            //SoapObject result = (SoapObject)envelope.getResponse();       
            String resultData = result.toString();
            testTV.setText(resultData);

        }
        catch(Exception e)
        {
            testTV.setText(e.getMessage());
        }

Aquí está mi servicio web simple .Net:

  

Función Pública getRegInfo (ByVal Un As String) As String

     

Vuelta A + "String mensaje"

     

End Function

Le agradecería cualquier ayuda.

¿Fue útil?

Solución

Lo que funcionó para mí estaba cambiando la URL espacio de nombres, tanto en mi servicio web .Net y en mi aplicación.

Por ejemplo, tuve:

" http://www.example.com/webservices/ "

i cambiado a:

"example.com/webservices /"

y funcionó perfectamente.

darle un tiro.

Otros consejos

Sí - no parece ser algún problema de tener dos puntos (:) en el espacio de nombres de servicio web, cuando se conecta a través de KSoap. no parámetro llamadas regulares funcionan bien, pero los parámetros parecen pasar por como nulo por alguna razón.

En realidad no hay necesidad de tener el extra "/" al final.

Después de la depuración y tratar sobre cualquier cosa que se escribe en la red, descubrí que lo más importante a la hora de pasar parámetros es tener la misma declaración en su servicio Web-declaración y ksoap2.

Así que el uso "/" en ambos lugares o eliminarlo de ambos lugares. "http: //". También es okey para uso

El código perfecto que añade los parámetros  esta obra tratan este

       SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE, OPERATION_NAME);

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.setOutputSoapObject(request);
    envelope.dotNet = true;
    PropertyInfo pi = new PropertyInfo();
    pi.setName("ProcName");
    pi.setValue(a);
    pi.setType(int.class);
    request.addProperty(pi);
    pi=new PropertyInfo();
    pi.setName("UserName");
    pi.setValue(b);
    pi.setType(String.class);
    request.addProperty(pi);

    pi=new PropertyInfo();
    pi.setName("Password");
    pi.setValue(c);
    pi.setType(String.class);
    request.addProperty(pi);

    pi=new PropertyInfo();
    pi.setName("Paras");
    pi.setValue(d);
    pi.setType(String.class);
    request.addProperty(pi);


    Object response = null;

    HttpTransportSE androidHttpTransport = new HttpTransportSE(SOAP_ADDRESS);

    try {
        androidHttpTransport.call(SOAP_ACTION, envelope);
        response = envelope.getResponse();
    } catch (final Exception e) {
        String error = "no";
    }
    return response.toString();
}

Hay que copiar y pegar la acción de espacio de nombres y jabón exactamente la misma que aparecen en el archivo XML de WSDL.

Yo tenía el mismo problema y cuando quité http: // a partir de (espacio de nombres y Acción jabón) el problema se resolvió (en el WSDL están sin http: //). He intentado acceder a un servicio web local (el servicio instalado en el servidor local)

Sin embargo, tengo otra aplicación que acceder a un servicio web externo .NET (Servicio web del banco central para obtener la tasa de cambio) El WSDL espacio de nombres y SoapAction Contiene http: // Mi solicitud funcionó a la perfección y sin eliminar http: //

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top