1.
NAMESPACE
java
Copiar código
final String NAMESPACE = "[Link] /";
• Qué es:
o El espacio de nombres (namespace) es un identificador único que
distingue este servicio SOAP de otros.
o En SOAP, el espacio de nombres asegura que no haya conflictos entre
métodos o elementos con el mismo nombre en diferentes servicios.
• Cómo se usa:
o Cuando se hace una solicitud SOAP, el NAMESPACE identifica al servicio
web específico.
• Ejemplo:
o Supongamos que hay dos servicios web:
▪ Servicio A: [Link]
▪ Servicio B: [Link]
o Ambos tienen un método llamado getInfo. El NAMESPACE permite saber
cuál getInfo invocar.
2. URL
java
Copiar código
final String URL =
"[Link]
• Qué es:
o Es la dirección donde está hospedado el servicio web SOAP.
o En este caso, apunta al archivo [Link], que actúa como
el punto de entrada para las solicitudes SOAP.
• Detalles sobre [Link]:
o Es una dirección IP especial usada en Android para pruebas en el
emulador.
o Se traduce a la dirección localhost de la máquina donde corre el
emulador.
• Ejemplo de uso:
o Supongamos que el servidor SOAP está en
[Link]
Cambiarías la URL así:
java
Copiar código
final String URL =
"[Link]
3. METHOD_NAME
java
Copiar código
final String METHOD_NAME = "ListadoClientes";
• Qué es:
o Es el nombre del método que quieres invocar dentro del servicio SOAP.
o Este método está definido en el servicio y realiza una operación
específica.
• Cómo se usa:
o Se incluye en la solicitud SOAP para indicar qué operación ejecutar.
o El servidor debe tener un método ListadoClientes configurado para
responder.
• Ejemplo:
o Si el método en el servicio devuelve una lista de clientes:
php
Copiar código
public function ListadoClientes() {
return [
['id' => 1, 'nombre' => 'Juan', 'telefono' =>
'123456789'],
['id' => 2, 'nombre' => 'Maria', 'telefono' =>
'987654321'],
];
}
o Este nombre asegura que invocarás ese método específico en el servidor.
4. SOAP_ACTION
java
Copiar código
final String SOAP_ACTION = "[Link]
• Qué es:
o Es una cadena que combina el NAMESPACE y el METHOD_NAME. Sirve como
identificador único para la acción que estás solicitando.
o Se utiliza en el encabezado HTTP de la solicitud SOAP.
• Cómo se usa:
o Durante la conexión al servicio, este valor indica qué operación ejecutar.
• Formato General:
text
Copiar código
SOAP_ACTION = NAMESPACE + METHOD_NAME
• Ejemplo:
o Si el espacio de nombres es [Link] y el método es
GetUserInfo, el SOAP_ACTION sería:
java
Copiar código
final String SOAP_ACTION =
"[Link]
Ejemplo Completo de Uso
Supongamos que tienes un servicio SOAP para manejar clientes hospedado en un
servidor con esta URL:
[Link] El servicio tiene un
espacio de nombres [Link] y un método GetClientes.
1. Parámetros Configurados:
java
Copiar código
final String NAMESPACE = "[Link]
final String URL =
"[Link]
final String METHOD_NAME = "GetClientes";
final String SOAP_ACTION =
"[Link]
2. Solicitud SOAP:
java
Copiar código
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapSerializationEnvelope envelope = new
SoapSerializationEnvelope(SoapEnvelope.VER11);
[Link] = true;
[Link](request);
HttpTransportSE transport = new HttpTransportSE(URL);
try {
[Link](SOAP_ACTION, envelope);
SoapObject response = (SoapObject) [Link]();
// Procesar la respuesta...
[Link]([Link]());
} catch (Exception e) {
[Link]();
}
3. Comportamiento:
o El cliente Android envía la solicitud SOAP al servidor en URL.
o Especifica el método GetClientes usando SOAP_ACTION.
o El servidor responde con la lista de clientes.
4. Salida Esperada:
text
Copiar código
<clientes>
<cliente>
<id>1</id>
<nombre>Juan</nombre>
<telefono>123456789</telefono>
</cliente>
<cliente>
<id>2</id>
<nombre>Maria</nombre>
<telefono>987654321</telefono>
</cliente>
</clientes>
Si estás utilizando XAMPP para hospedar tu servicio SOAP en un servidor local,
puedes definir el NAMESPACE en función de cómo estructuraste tu servicio en el servidor
PHP. Aquí tienes una guía para configurarlo correctamente:
Cómo definir el NAMESPACE
El NAMESPACE debe ser una cadena que identifique de manera única tu servicio. Aunque
puedes usar cualquier valor, normalmente sigue la convención de una URL. Si estás
trabajando con XAMPP, puedes usar una dirección local.
1. Ejemplo Simple para XAMPP: Supongamos que tienes un servicio SOAP en
un archivo llamado [Link] ubicado en:
makefile
Copiar código
C:\xampp\htdocs\soap_service\[Link]
La URL de tu servicio sería:
arduino
Copiar código
[Link]
Sin embargo, el NAMESPACE no necesita apuntar directamente al archivo, puede
ser algo genérico para identificar el servicio. Por ejemplo:
java
Copiar código
final String NAMESPACE = "[Link]
Pasos Detallados para Configurar el NAMESPACE
1. Define tu Servicio en PHP: En el archivo [Link], asegúrate
de definir el espacio de nombres de la misma forma. Por ejemplo:
php
Copiar código
$server = new soap_server();
$server->configureWSDL("ServicioClientes",
"[Link]
2. Configura el Cliente Android: En el cliente Android, usa el mismo valor de
NAMESPACE:
java
Copiar código
final String NAMESPACE = "[Link]
3. Verifica tu URL: La URL debe apuntar al archivo que maneja el servicio
SOAP:
java
Copiar código
final String URL =
"[Link]
4. Combina el SOAP_ACTION: Combina el NAMESPACE y el nombre del método
(por ejemplo, ListadoClientes) para definir SOAP_ACTION:
java
Copiar código
final String SOAP_ACTION =
"[Link]
Ejemplo Completo
1. Servicio PHP en XAMPP:
php
Copiar código
<?php
require_once "lib/[Link]";
$server = new soap_server();
$server->configureWSDL("ServicioClientes",
"[Link]
$server->register("ListadoClientes");
function ListadoClientes() {
return [
['id' => 1, 'nombre' => 'Juan', 'telefono' =>
'123456789'],
['id' => 2, 'nombre' => 'Maria', 'telefono' =>
'987654321'],
];
}
$server->service(file_get_contents("php://input"));
?>
2. Cliente Android:
java
Copiar código
final String NAMESPACE = "[Link]
final String URL =
"[Link]
final String METHOD_NAME = "ListadoClientes";
final String SOAP_ACTION =
"[Link]
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapSerializationEnvelope envelope = new
SoapSerializationEnvelope(SoapEnvelope.VER11);
[Link] = true;
[Link](request);
HttpTransportSE transport = new HttpTransportSE(URL);
try {
[Link](SOAP_ACTION, envelope);
SoapObject response = (SoapObject) [Link]();
[Link]([Link]());
} catch (Exception e) {
[Link]();
}
Consideraciones
1. Si estás trabajando con un emulador de Android:
o Usa [Link] en lugar de [Link]
java
Copiar código
final String URL =
"[Link]
final String NAMESPACE = "[Link]
2. Si pruebas en un dispositivo físico:
o Usa la dirección IP local de tu máquina en lugar de localhost o
[Link].
java
Copiar código
final String URL =
"[Link]
final String NAMESPACE = "[Link]
3. Asegúrate de que el servidor XAMPP esté corriendo y que el puerto (por defecto
80) no esté bloqueado.