Frecuentemente me encuentro con programadores de plataforma móvil Android que desean incursionar en el desarrollo de un WebService y no saben donde comenzar o lo que deben saber para llevar a cabo esa integración.
En primer lugar hablaré de lo que significa un WebService, sus elementos y como puede ser aprovechado.
El concepto WebService surge a partir de la necesidad de conectar dos puntos dentro de la Internet. Una, la que tiene inicialmente la información (el servidor) y otra (el cliente) que recibe información en forma de consultas o envía nueva información para ser procesada o grabada por el servidor.
Pongamos un ejemplo sencillo. Lo más natural para nosotros es abrir la aplicación de Red Social. La primera vez, completamos nuestros datos de registro e ingresamos (mediante un login) a la misma. Esto no sería posible sin un WebService.
En este ejemplo existe una máquina en una remota parte del mundo que está pendiente de recibir (escuchando) una nueva conexión, recibe datos del cliente y lo procesa. Luego de este proceso, el mismo servidor envía cierta información al cliente y este cliente (en su lógica programada) genera una respuesta y evento a este dato, mostrando al usuario en pantalla la información recibida y generando una interacción.
Este WebService es simplemente un programa servidor ejecutado continuamente en una máquina esperando que otro programa cliente le envíe información en un formato y parámetros esperados.
La conexión a un WebService generalmente se invoca por medio de una URL (dirección web) tal como https://direccionweb:puerto. La dirección web puede ser un dominio ‘midominio.com’ o una IP 172.217.3.142. El ‘puerto’ es un número entero, generalmente entre 80 y 65535, que nos permite indicar específicamente la puerta de entrada de la petición de información. En la misma máquina servidor pueden estar corriendo varios WebService, a través del puerto se puede hacer esa diferenciación.

¿Qué tipo de información se recibe o envía?
Un formato XML sería…
<?xml version="1.0" encoding="UTF-8"?>
<BeginSession xmlns=”http://webservices.galileo.com">
<Profile>Simulator</Profile></BeginSession>
<?xml version="1.0" encoding="UTF-8"?><string xmlns=”http://webservices.galileo.com">Tyv8NKo+WiAuqQVR3H09+7QBvWWvgwIAXg4IFYGpVnZD09c4l9VXnQ/VDkxJ4oxnIyt5D/+nLzcwi/GRLSy+n646anneL1zCVOvXxN8nDiE=</string>
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<ns1:RequestHeader
soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next"
soapenv:mustUnderstand="0"
xmlns:ns1="https://www.google.com/apis/ads/publisher/v201905">
<ns1:networkCode>123456</ns1:networkCode>
<ns1:applicationName>DfpApi-Java-2.1.0-dfp_test</ns1:applicationName>
</ns1:RequestHeader>
</soapenv:Header>
<soapenv:Body>
<getAdUnitsByStatement xmlns="https://www.google.com/apis/ads/publisher/v201905">
<filterStatement>
<query>WHERE parentId IS NULL LIMIT 500</query>
</filterStatement>
</getAdUnitsByStatement>
</soapenv:Body>
</soapenv:Envelope>
El formato REST es un formato más simple que implica simplemente enviar palabras claves que indiquen al servidor qué tipo de acción necesitamos que procese y con qué datos.
La petición de información (request) a través de un REST generalmente se hace enviando los parámetros o información dentro de la misma dirección URL que invocamos para conectarnos.
Un ejemplo REST podría ser…
https://www.google.com/search?q=hola
Aquí le estamos pidiendo al servidor de google que haga una búsqueda (search) de la palabra (parámetro) ‘hola’. Este tipo de peticiones son llamados generalmente de tipo GET.
También existen servicios REST cuya información no es mostrada en el URL, sino que son transmitidas enviando una cadena de texto por medio de parámetros no visibles, generalmente de tipo POST o PUT.
Estas palabras mágicas GET, POST, PUT son acciones que el WebService debe interpretar y en forma coherente responder en base a estas. GET indica ‘obtener’ información. POST sugiere ‘publicar’ y PUT implica ‘escribir’ cierta información por el lado del servidor. No son las únicas acciones, existen un par mas.