servicio web recieves parámetros nulos de la aplicación usando el método ksoap
-
27-09-2019 - |
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.
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: //