¿Cómo llama Android al servicio web?
(1) Especifique el espacio de nombres del servicio web y el nombre del método llamado, por ejemplo:
solicitud de objeto SOAP = nuevo objeto SOAP (http:// service, "getName");
El primer parámetro de la clase SoapObject representa el espacio de nombres del WebService, que se puede encontrar en el documento WSDL. El segundo parámetro representa el nombre del método WebService que se llamará.
(2) Establece el valor del parámetro del método de llamada. Si no hay parámetros, se pueden omitir. El código para establecer el valor del parámetro de este método es el siguiente:
request.add property("param 1","value");
Request.addProperty("param2" ,"value") ;
Cabe señalar que el parámetro 1 del método addProperty representa el nombre del parámetro del método que llama, pero el valor del parámetro no es necesariamente coherente con el nombre del parámetro del método en el servidor. Clase WebService, siempre que el orden de configuración de los parámetros sea coherente.
(3) Generar información de solicitud SOAP para llamar al método Webservice. Esta información se describe mediante el objeto SoapSerializationEnvelope y el código es:
sobre de serialización de SOAP sobre = nuevo
sobre de serialización de SOAP (sobre de SOAP.ver 11);
Envelope.bodyOut = request
Al crear un objeto SoapSerializationEnvelope, debe establecer el número de versión del protocolo SOAP a través del constructor de la clase SoapSerializationEnvelope. Este número de versión debe configurarse de acuerdo con el número de versión del servicio web del servidor. Después de crear el objeto SoapSerializationEnvelope, no olvide establecer la propiedad bodyOut de la clase SoapSerializationEnvelope. El valor de esta propiedad es el objeto SoapObject creado en el primer paso.
(4) Cree un objeto HttpTransportsSE. La URL del documento WSDL de WebService se puede especificar a través del constructor de la clase HttpTransportsSE:
http transportse ht = new http transportse("search news service?wsdl");
(5) Utilice el método de llamada para llamar al método WebService, código:
ht.call (vacío, sobre
El primer parámetro del método Call es generalmente nulo y el segundo parámetro está en el paso El objeto SoapSerializationEnvelope creado en 3.
(6) Utilice el método getResponse para obtener el resultado de retorno del método WebService, código:
objeto jabón objeto jabón =(objeto jabón)envelope.getresponse(); p>
El siguiente es un ejemplo sencillo para implementar la función de visualización del tiempo:
Copiar código
actividad de extensión del servicio web publicclass {
privatestaticfinal string namespace = " ";
//Dirección del servicio web
URL de cadena estática privada = " servicio web meteorológico . asmx ";
cadena privadaticcfinal METHOD _ NAME = " getWeatherbyCityName ";
p>
Cadena privada estática SOAP _ ACTION = " getWeatherbyCityName ";
Cadena privada climaToday
Botón privado okButton
Detalles privados de SoapObject;
p>
@Override
public void onCreate(Paquete de estado de instancia guardado){
super oncreate(savedInstanceState);
setContentView(r . diseño . principal);
Botón ok = (Botón)findViewById(r . id . ok);
okButton.setOnClickListener(nuevo button.OnClickListener() {
publicvoid onClick(view v) {
showWeather();
}
});
}
privatevoid showWeather() {
Xiancheng = "Wuhan";
getWeather(ciudad);
}
@SuppressWarnings( "deprecation ")
public void getWeather(String ciudad nombre){
Prueba {
system . out . println(" RPC-");
p>
SoapObject rpc =new SoapObject(espacio de nombres, METHOD_NAME);
system out . RPC);
system . out . println(" el nombre de la ciudad es "+nombre de la ciudad);
rpc.addProperty("theCityName ", nombre de la ciudad); p>AndroidHttpTransport ht = new AndroidHttpTransport(URL);
ht.debug = true
SoapSerializationEnvelope sobre = new SoapSerializationEnvelope(
Soap Soap.
ver 11);
sobre.bodyOut = rpc
sobre.dotNet = true
sobre .setoutputsoapobject(RPC);
ht. .call(SOAP_ACTION, sobre);
resultado del objeto SOAP = (objeto SOAP)cuerpo del sobre;
detalle = resultado (SoapObject)
. getProperty(" getWeatherbyCityNameResult ");
system out . println(" resultado "+resultado);
System.out.println("Detalles"+Detalles);
Toast.makeText(WebService.this, Detail.toString(),
Toast.length_long). show();
parseWeather(detalles);
return;
} catch(Exception e) {
e . );
}
}
clima de análisis de vacío privado (detalles del objeto de jabón)
Lanza una excepción de codificación no compatible {
fecha de cadena = detalle . toString();
clima Hoy = "Hoy:"+fecha . split(" "[0]);
El clima de hoy = el clima de hoy+" \ nTiempo: "+ fecha . split(" "[1];
El clima de hoy = el clima de hoy +" \nTemperatura: "
+ detalle.getProperty(5).toString();
p >El tiempo de hoy=El tiempo de hoy+"\nViento:"
+ detalle.getProperty(7). toString()+"\n";
sistema.println. (" el tiempo de hoy es "+tiempo de hoy
Toast.makeText(WebService.this, tiempoToday,
toast.length_long
}
p>
}