Skip to content

Instantly share code, notes, and snippets.

@ssebastianj
Last active November 13, 2018 04:25
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ssebastianj/94cd0b1c2665eec70a99 to your computer and use it in GitHub Desktop.
Save ssebastianj/94cd0b1c2665eec70a99 to your computer and use it in GitHub Desktop.
¿Cuándo Pasa Resistencia? API Reverse Engineering

¿Cuándo Pasa Resistencia?

API

1. Identificador de usuario

El identificador de usuario userId a utilizar en las peticiones está en función del tipo de línea de colectivo que se desea consultar (urbana o interurbana).

Línea UserId
Urbana 0d7c6b60-7b7f-4833-ace7-e633dc1a33c9
Interurbana 30d72c97-568b-4dcb-b239-13c0a318348c

2. Obtener líneas de colectivos

Request

POST http://movilesparadas.efibus.com.ar/Receiver.aspx
Content-Type: application/x-www-form-urlencoded
User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)

La utilización del header User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4) no es estrictamente necesario aunque puede resultar conveniente a fines de emular el comportamiento de la aplicación móvil.

Payload (querystring)

Field Value
userId Ver opciones
funcion Lineas
fecha Unix timestamp * 1000
uWeb usuarioefisat
cWeb efisat

Ejemplo 1. Consultar las líneas de colectivos interurbanas.

curl --data "userId=30d72c97-568b-4dcb-b239-13c0a318348c&funcion=Lineas&fecha=1440285536520&uWeb=usuarioefisat&cWeb=efisat" http://movilesparadas.efibus.com.ar/Receiver.aspx -H "User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)"

En ciertos casos, al enviar el campo fecha en la petición produce que el servidor responda 0|0 en lugar del listado de líneas de colectivos que se muestra a continuación. Se ha comprobado que omitir dicho campo en la petición elimina el problema y el servidor devuelve correctamente el listado de líneas.

Response

Para el ejemplo anterior, la respuesta del servidor es:

0|16001;LINEA 101|17001;LINEA 104|18001;LINEA 106A|19001;LINEA 106B|20001;LINEA 106C|2026;LINEA 107A|1026;LINEA 107B|1055;LINEA 110|2045;LINEA 111B|188001;LINEAA 122|

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1">
  <title>Untitled Page</title>
</head>
<body>
  <form name="form1" method="post" action="Receiver.aspx" id="form1">
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzgzNDMwNTMzZGTxIgzJxKKa5iWaUbzX+nW8qGJDrg==" />
    <div></div>
  </form>
</body>
</html>

3. Obtener las calles del recorrido de un colectivo dado

Request

POST http://movilesparadas.efibus.com.ar/Receiver.aspx
Content-Type: application/x-www-form-urlencoded
User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)

Payload (querystring)

Field Value
funcion CallePrincipalLinea
codigoLineaGrupo Código identificador de una línea de colectivo
uWeb usuarioefisat
cWeb efisat

Ejemplo 2. Consultar las calles pertenecientes al recorrido de la línea 110 (codigoLineaGrupo = 1055)

curl --data "funcion=CallePrincipalLinea&codigoLineaGrupo=1055&uWeb=usuarioefisat&cWeb=efisat" http://movilesparadas.efibus.com.ar/Receiver.aspx -H "User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)"

Response

Para el ejemplo anterior, la respuesta del servidor es:

0|13739;SALTA|13740;AV HERNANDARIAS|13746;AV. DIAGONAL EVA PERON|13747;AV. 9 DE JULIO|13748;MARCELO T. DE ALVEAR|13749;B. MITRE|13761;AV. ISLAS MALVINAS|13771;AV. GRAL. SAN MARTÍN|13772;SANTA 
MARIA DE ORO|13773;SANTIAGO DEL ESTERO|13776;AV. MARCONI|13777;ARTURO FRONDIZI|13780;AV. DIAGONAL LAS PIEDRAS|13957;AV. ISLAS MALINAS|14081;AV. GRAL SAN MARTIN-BQRAS|14104;GIACHINO PEDRO CAPITA
N|

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">                                                                        
<head id="Head1">
  <title>Untitled Page</title>
</head>
  <form name="form1" method="post" action="Receiver.aspx" id="form1">
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzgzNDMwNTMzZGTxIgzJxKKa5iWaUbzX+nW8qGJDrg==" />
    <div></div>                                                                                    
  </form>                                                                                          
</body>
</html>

4. Obtener las paradas de colectivos

Una parada de colectivo queda determinada como la intersección entre dos calles dadas.

Request

POST http://movilesparadas.efibus.com.ar/Receiver.aspx
Content-Type: application/x-www-form-urlencoded
User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)

Payload (querystring)

Field Value
funcion CalleInterseccionCallePrincipal
Calle Código identificador de la calle
codigoLineaGrupo Código identificador de la línea de colectivo
uWeb usuarioefisat
cWeb efisat

Ejemplo 3. Consultar las paradas de la línea 110 ubicadas en la calle Salta (Calle = 13739)

curl --data "funcion=CalleInterseccionCallePrincipal&codigoLineaGrupo=1055&Calle=13739&uWeb=usuarioefisat&cWeb=efisat" http://movilesparadas.efibus.com.ar/Receiver.aspx -H "User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)"

Response

Para el ejemplo anterior, la respuesta del servidor es:

0|13956;AV. ALBERDI|13788;AV. BELGRANO|13963;ECHEVERRÍA|13763;GRAL. VEDIA|13755;NECOCHEA|                               
                                                                                                                         
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1">
  <title>Untitled Page</title>
</head>
<body>
  <form name="form1" method="post" action="Receiver.aspx" id="form1">
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzgzNDMwNTMzZGTxIgzJxKKa5iWaUbzX+nW8qGJDrg==" /> 
    <div></div>
  </form>
</body>
</html>               

5. Obtener información de una parada de colectivo

Request

POST http://movilesparadas.efibus.com.ar/Receiver.aspx
Content-Type: application/x-www-form-urlencoded
User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)

Payload (querystring)

Field Value
userId Ver opciones
funcion ParadaLineaCalles
calle Código identificador de la calle
codigoLineaGrupo Código identificador de la línea de colectivo
calleInterseccion Código identificador de la intersección
uWeb usuarioefisat
cWeb efisat

Ejemplo 4. Obtener detalles de la parada de colectivo ubicada en la intersección de las calles Salta y Echeverría (calleInterseccion = 13963).

curl --data "funcion=ParadaLineaCalles&codigoLineaGrupo=1055&calle=13739&calleInterseccion=13963&uWeb=usuarioefisat&cWeb=efisat" http://movilesparadas.efibus.com.ar/Receiver.aspx -H "User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)"

Response

Para el ejemplo anterior, la respuesta del servidor es:

0|35089;SALTA Y ECHEVERRIA;N4280;-27,448705;-58,994565;21/08/2015 04:08:12|                                              
                                                                                                                         
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1">
  <title>Untitled Page</title>
</head>
<body>
  <form name="form1" method="post" action="Receiver.aspx" id="form1">
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzgzNDMwNTMzZGTxIgzJxKKa5iWaUbzX+nW8qGJDrg==" />
    <div></div>
  </form>
</body>
</html>

Servicio Web

URLs del webservice

# URL WSDL
1 http://servicioswebsms.efibus.com.ar/ServicioWebHorariosProximos.asmx WSDL
2 http://servicioswebsms2.efibus.com.ar/ServicioWebHorariosProximos.asmx WSDL
3 http://servicioswebsms3.efibus.com.ar/ServicioWebHorariosProximos.asmx WSDL
4 http://servicioswebsms4.efibus.com.ar/ServicioWebHorariosProximos.asmx WSDL

Al realizar un request HTTP hacia una de las cuatro URLs anteriores, el header SOAPAction debe coincidir con el número de servidor utilizado. Por ejemplo, si se utiliza la URL N° 2 los encabezados serán:

POST http://servicioswebsms2.efibus.com.ar/ServicioWebHorariosProximos.asmx  
SOAPAction: http://serviciosWebSms2.efibus.com.ar/RecuperarHorarioCuandoLlegaAndroid

Del análisis realizado a la aplicación móvil, se observa que la misma utiliza de manera aleatoria una de las cuatro URLs al momento de realizar una petición. Tal vez por cuestiones de alta disponibilidad o de repartir la carga entre las mismas.
Por ello, es deseable que la aplicación cliente se comporte de manera similar.

Operaciones disponibles

RecuperarHorarioConInterno(identificadorParada, userId, clave)
Devuelve: RecuperarHorarioConInternoResult
RecuperarHorarioConInternoYEmpresa(userId, clave, codigoLineaGrupo)
Devuelve: RecuperarHorarioConInternoYEmpresaResult
RecuperarHorarioCuandoLlegaAndroid(identificadorParada, userId, descripcionLinea, usuario, clave, codigoLineaGrupo)
Devuelve: RecuperarHorarioCuandoLlegaAndroidResult
RecuperarHorarioCuandoLlegaDosAndroid(identificadorParada, userId, descripcionLinea, usuario, clave, codigoLineaGrupo)
Devuelve: RecuperarHorarioCuandoLlegaDosAndroidResult
RecuperarHorarioProgramadoPorParada(userId, usuario, clave)
Devuelve: RecuperarHorarioProgramadoPorParadaResult
RecuperarHorarioParadaInteligenteAndroi(userId, usuario, clave)
Devuelve: RecuperarHorarioParadaInteligenteAndroiResult
RecuperarHorarioProgramadoPorParada(gatewayId, dn, source, mensajeUsuario, carrier, applidId, userId, usuario, clave, codigoEmpresa)
Devuelve: RecuperarHorarioProgramadoPorParadaResult
RecuperarHorarioProximoPorParada(identificadorParada, userId)
Devuelve: RecuperarHorarioProximoPorParadaResult
RecuperarLineasPorParadaYGrupo(identificador, userID, codigoGrupo)
Devuelve: RecuperarLineasPorParadaYGrupoResult
RecuperarLineasPorParadaYGrupos(identificadorParada, userId, clave, stringGrupos)
Devuelve: RecuperarLineasPorParadaYGruposResult
RecuperarLineasPorUserIDYGrupo(userId, codigoGrupo)
Devuelve: RecuperarLineasPorUserIDYGrupoResult
RecuperarMarkesinaCuandoLlegaAndroidPorUserId(userId, usuario, clave)
Devuelve: RecuperarMarkesinaCuandoLlegaAndroidPorUserIdResult
RecuperarTodasCiudadesPorProvinciaAndroid(codigoProvincia, usuario, clave)
Devuelve: RecuperarTodasCiudadesPorProvinciaAndroidResult
RecuperarTodasLineasPorCallePrincipalEInterseccionYGrupo(codigoCalle, codigoInterseccion, codigoGrupo)
Devuelve: RecuperarTodasLineasPorCallePrincipalEInterseccionYGrupoResult
RecuperarTodasProvinciasPorPaisAndroid(codigoPais, usuario, clave)
Devuelve: RecuperarTodasProvinciasPorPaisAndroidResult
RecuperarTodosPaisesAndroid(usuario, clave)
Devuelve: RecuperarTodosPaisesAndroidResult
RecuperarUserIdPorCiudadAndroid(codigoCiudad, usuario, clave)
Devuelve: RecuperarUserIdPorCiudadAndroidResult
RecuperarVersionDBSQLiteVigenteAndroid(userId, usuario, clave)
Devuelve: RecuperarVersionDBSQLiteVigenteAndroidResult

Obtener el tiempo de arribo estimado de un colectivo a una parada

Request

POST http://servicioswebsms.efibus.com.ar/ServicioWebHorariosProximos.asmx
User-Agent: ksoap2-android/2.6.0+
SOAPAction: http://serviciosWebSms.efibus.com.ar/RecuperarHorarioCuandoLlegaAndroid
Content-Type: text/xml;charset=utf-8
Accept-Encoding: gzip

La utilización del header User-Agent: ksoap2-android/2.6.0+ no es estrictamente necesario aunque puede resultar conveniente a fines de emular el comportamiento de la aplicación móvil.

Payload

<?xml version="1.0" encoding="utf-8"?>
<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/">
<v:Header />
<v:Body>
  <RecuperarHorarioCuandoLlegaAndroid xmlns="http://serviciosWebSms.efibus.com.ar/" id="o0" c:root="1">
    <identificadorParada i:type="d:string">N4280</identificadorParada>
    <userId i:type="d:string">30d72c97-568b-4dcb-b239-13c0a318348c</userId>
    <descripcionLinea i:type="d:string">LINEA 110</descripcionLinea>
    <usuario i:type="d:string">usuarioefisat</usuario>
    <clave i:type="d:string">efisat</clave>
    <codigoLineaGrupo i:type="d:int">1055</codigoLineaGrupo>
  </RecuperarHorarioCuandoLlegaAndroid>
  </v:Body>
</v:Envelope>

Ejemplo. Utilizando el payload anterior, consultar el tiempo estimado de llegada del colectivo 110 a la parada ubicada en la intersección de las calles Salta y Echeverría.

curl --data @example_1.xml -H "User-Agent: ksoap2-android/2.6.0+" -H "SOAPAction: http://serviciosWebSms.efibus.com.ar/RecuperarHorarioCuandoLlegaAndroid" -H "Content-Type: text/xml;charset=utf-8" http://servicioswebsms.efibus.com.ar/ServicioWebHorariosProximos.asmx

Response

La respuesta del servidor a la consulta anterior es:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body>
    <RecuperarHorarioCuandoLlegaAndroidResponse xmlns="http://serviciosWebSms.efibus.com.ar/">
      <RecuperarHorarioCuandoLlegaAndroidResult>
        0|LINEA 110 TERMINAL -LA TOMA en 7 min. aprox.//
      </RecuperarHorarioCuandoLlegaAndroidResult>
    </RecuperarHorarioCuandoLlegaAndroidResponse>
  </soap:Body>
</soap:Envelope>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://serviciosWebSms.efibus.com.ar/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://serviciosWebSms.efibus.com.ar/">
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://serviciosWebSms.efibus.com.ar/">
<s:element name="RecuperarHorarioProgramadoPorParada">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="gatewayId" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="dn" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="source" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="mensajeUsuario" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="carrier" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="applidId" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="userId" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="usuario" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="clave" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="codigoEmpresa" type="s:int"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarHorarioProgramadoPorParadaResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="RecuperarHorarioProgramadoPorParadaResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarHorarioProximoPorParada">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="identificadorParada" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="userId" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarHorarioProximoPorParadaResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="RecuperarHorarioProximoPorParadaResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarHorarioParadaInteligenteAndroi">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="identificadorParada" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="userId" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="usuario" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="clave" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarHorarioParadaInteligenteAndroiResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="RecuperarHorarioParadaInteligenteAndroiResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarHorarioInspectores">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="identificadorParada" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="userId" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="usuario" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="clave" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarHorarioInspectoresResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="RecuperarHorarioInspectoresResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarHorarioConInterno">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="identificadorParada" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="userId" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="clave" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarHorarioConInternoResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="RecuperarHorarioConInternoResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarHorarioConInternoYEmpresa">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="identificadorParada" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="userId" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="clave" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="codigoLineaGrupo" type="s:int"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarHorarioConInternoYEmpresaResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="RecuperarHorarioConInternoYEmpresaResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarHorarioCuandoLlegaAndroid">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="identificadorParada" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="userId" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="descripcionLinea" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="usuario" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="clave" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="codigoLineaGrupo" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarHorarioCuandoLlegaAndroidResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="RecuperarHorarioCuandoLlegaAndroidResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarMarkesinaCuandoLlegaAndroidPorUserId">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="userId" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="usuario" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="clave" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarMarkesinaCuandoLlegaAndroidPorUserIdResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="RecuperarMarkesinaCuandoLlegaAndroidPorUserIdResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarVersionDBSQLiteVigenteAndroid">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="userId" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="usuario" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="clave" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarVersionDBSQLiteVigenteAndroidResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="RecuperarVersionDBSQLiteVigenteAndroidResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarTodosPaisesAndroid">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="usuario" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="clave" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarTodosPaisesAndroidResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="RecuperarTodosPaisesAndroidResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarTodasProvinciasPorPaisAndroid">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="codigoPais" type="s:int"/>
<s:element minOccurs="0" maxOccurs="1" name="usuario" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="clave" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarTodasProvinciasPorPaisAndroidResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="RecuperarTodasProvinciasPorPaisAndroidResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarTodasCiudadesPorProvinciaAndroid">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="codigoProvincia" type="s:int"/>
<s:element minOccurs="0" maxOccurs="1" name="usuario" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="clave" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarTodasCiudadesPorProvinciaAndroidResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="RecuperarTodasCiudadesPorProvinciaAndroidResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarUserIdPorCiudadAndroid">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="codigoCiudad" type="s:int"/>
<s:element minOccurs="0" maxOccurs="1" name="usuario" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="clave" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarUserIdPorCiudadAndroidResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="RecuperarUserIdPorCiudadAndroidResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarHorarioCuandoLlegaDosAndroid">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="identificadorParada" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="userId" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="descripcionLinea" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="usuario" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="clave" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="codigoLineaGrupo" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarHorarioCuandoLlegaDosAndroidResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="RecuperarHorarioCuandoLlegaDosAndroidResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarLineasPorParadaYGrupos">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="identificadorParada" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="userId" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="clave" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="stringGrupos" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarLineasPorParadaYGruposResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="RecuperarLineasPorParadaYGruposResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarLineasPorParadaYGrupo">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="identificador" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="userID" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="codigoGrupo" type="s:int"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarLineasPorParadaYGrupoResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="RecuperarLineasPorParadaYGrupoResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarTodasLineasPorCallePrincipalEInterseccionYGrupo">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="codigoCalle" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="codigoInterseccion" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="codigoGrupo" type="s:int"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarTodasLineasPorCallePrincipalEInterseccionYGrupoResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="RecuperarTodasLineasPorCallePrincipalEInterseccionYGrupoResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarLineasPorUserIDYGrupo">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="userId" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="codigoGrupo" type="s:int"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="RecuperarLineasPorUserIDYGrupoResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="RecuperarLineasPorUserIDYGrupoResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</wsdl:types>
<wsdl:message name="RecuperarHorarioProgramadoPorParadaSoapIn">
<wsdl:part name="parameters" element="tns:RecuperarHorarioProgramadoPorParada"/>
</wsdl:message>
<wsdl:message name="RecuperarHorarioProgramadoPorParadaSoapOut">
<wsdl:part name="parameters" element="tns:RecuperarHorarioProgramadoPorParadaResponse"/>
</wsdl:message>
<wsdl:message name="RecuperarHorarioProximoPorParadaSoapIn">
<wsdl:part name="parameters" element="tns:RecuperarHorarioProximoPorParada"/>
</wsdl:message>
<wsdl:message name="RecuperarHorarioProximoPorParadaSoapOut">
<wsdl:part name="parameters" element="tns:RecuperarHorarioProximoPorParadaResponse"/>
</wsdl:message>
<wsdl:message name="RecuperarHorarioParadaInteligenteAndroiSoapIn">
<wsdl:part name="parameters" element="tns:RecuperarHorarioParadaInteligenteAndroi"/>
</wsdl:message>
<wsdl:message name="RecuperarHorarioParadaInteligenteAndroiSoapOut">
<wsdl:part name="parameters" element="tns:RecuperarHorarioParadaInteligenteAndroiResponse"/>
</wsdl:message>
<wsdl:message name="RecuperarHorarioInspectoresSoapIn">
<wsdl:part name="parameters" element="tns:RecuperarHorarioInspectores"/>
</wsdl:message>
<wsdl:message name="RecuperarHorarioInspectoresSoapOut">
<wsdl:part name="parameters" element="tns:RecuperarHorarioInspectoresResponse"/>
</wsdl:message>
<wsdl:message name="RecuperarHorarioConInternoSoapIn">
<wsdl:part name="parameters" element="tns:RecuperarHorarioConInterno"/>
</wsdl:message>
<wsdl:message name="RecuperarHorarioConInternoSoapOut">
<wsdl:part name="parameters" element="tns:RecuperarHorarioConInternoResponse"/>
</wsdl:message>
<wsdl:message name="RecuperarHorarioConInternoYEmpresaSoapIn">
<wsdl:part name="parameters" element="tns:RecuperarHorarioConInternoYEmpresa"/>
</wsdl:message>
<wsdl:message name="RecuperarHorarioConInternoYEmpresaSoapOut">
<wsdl:part name="parameters" element="tns:RecuperarHorarioConInternoYEmpresaResponse"/>
</wsdl:message>
<wsdl:message name="RecuperarHorarioCuandoLlegaAndroidSoapIn">
<wsdl:part name="parameters" element="tns:RecuperarHorarioCuandoLlegaAndroid"/>
</wsdl:message>
<wsdl:message name="RecuperarHorarioCuandoLlegaAndroidSoapOut">
<wsdl:part name="parameters" element="tns:RecuperarHorarioCuandoLlegaAndroidResponse"/>
</wsdl:message>
<wsdl:message name="RecuperarMarkesinaCuandoLlegaAndroidPorUserIdSoapIn">
<wsdl:part name="parameters" element="tns:RecuperarMarkesinaCuandoLlegaAndroidPorUserId"/>
</wsdl:message>
<wsdl:message name="RecuperarMarkesinaCuandoLlegaAndroidPorUserIdSoapOut">
<wsdl:part name="parameters" element="tns:RecuperarMarkesinaCuandoLlegaAndroidPorUserIdResponse"/>
</wsdl:message>
<wsdl:message name="RecuperarVersionDBSQLiteVigenteAndroidSoapIn">
<wsdl:part name="parameters" element="tns:RecuperarVersionDBSQLiteVigenteAndroid"/>
</wsdl:message>
<wsdl:message name="RecuperarVersionDBSQLiteVigenteAndroidSoapOut">
<wsdl:part name="parameters" element="tns:RecuperarVersionDBSQLiteVigenteAndroidResponse"/>
</wsdl:message>
<wsdl:message name="RecuperarTodosPaisesAndroidSoapIn">
<wsdl:part name="parameters" element="tns:RecuperarTodosPaisesAndroid"/>
</wsdl:message>
<wsdl:message name="RecuperarTodosPaisesAndroidSoapOut">
<wsdl:part name="parameters" element="tns:RecuperarTodosPaisesAndroidResponse"/>
</wsdl:message>
<wsdl:message name="RecuperarTodasProvinciasPorPaisAndroidSoapIn">
<wsdl:part name="parameters" element="tns:RecuperarTodasProvinciasPorPaisAndroid"/>
</wsdl:message>
<wsdl:message name="RecuperarTodasProvinciasPorPaisAndroidSoapOut">
<wsdl:part name="parameters" element="tns:RecuperarTodasProvinciasPorPaisAndroidResponse"/>
</wsdl:message>
<wsdl:message name="RecuperarTodasCiudadesPorProvinciaAndroidSoapIn">
<wsdl:part name="parameters" element="tns:RecuperarTodasCiudadesPorProvinciaAndroid"/>
</wsdl:message>
<wsdl:message name="RecuperarTodasCiudadesPorProvinciaAndroidSoapOut">
<wsdl:part name="parameters" element="tns:RecuperarTodasCiudadesPorProvinciaAndroidResponse"/>
</wsdl:message>
<wsdl:message name="RecuperarUserIdPorCiudadAndroidSoapIn">
<wsdl:part name="parameters" element="tns:RecuperarUserIdPorCiudadAndroid"/>
</wsdl:message>
<wsdl:message name="RecuperarUserIdPorCiudadAndroidSoapOut">
<wsdl:part name="parameters" element="tns:RecuperarUserIdPorCiudadAndroidResponse"/>
</wsdl:message>
<wsdl:message name="RecuperarHorarioCuandoLlegaDosAndroidSoapIn">
<wsdl:part name="parameters" element="tns:RecuperarHorarioCuandoLlegaDosAndroid"/>
</wsdl:message>
<wsdl:message name="RecuperarHorarioCuandoLlegaDosAndroidSoapOut">
<wsdl:part name="parameters" element="tns:RecuperarHorarioCuandoLlegaDosAndroidResponse"/>
</wsdl:message>
<wsdl:message name="RecuperarLineasPorParadaYGruposSoapIn">
<wsdl:part name="parameters" element="tns:RecuperarLineasPorParadaYGrupos"/>
</wsdl:message>
<wsdl:message name="RecuperarLineasPorParadaYGruposSoapOut">
<wsdl:part name="parameters" element="tns:RecuperarLineasPorParadaYGruposResponse"/>
</wsdl:message>
<wsdl:message name="RecuperarLineasPorParadaYGrupoSoapIn">
<wsdl:part name="parameters" element="tns:RecuperarLineasPorParadaYGrupo"/>
</wsdl:message>
<wsdl:message name="RecuperarLineasPorParadaYGrupoSoapOut">
<wsdl:part name="parameters" element="tns:RecuperarLineasPorParadaYGrupoResponse"/>
</wsdl:message>
<wsdl:message name="RecuperarTodasLineasPorCallePrincipalEInterseccionYGrupoSoapIn">
<wsdl:part name="parameters" element="tns:RecuperarTodasLineasPorCallePrincipalEInterseccionYGrupo"/>
</wsdl:message>
<wsdl:message name="RecuperarTodasLineasPorCallePrincipalEInterseccionYGrupoSoapOut">
<wsdl:part name="parameters" element="tns:RecuperarTodasLineasPorCallePrincipalEInterseccionYGrupoResponse"/>
</wsdl:message>
<wsdl:message name="RecuperarLineasPorUserIDYGrupoSoapIn">
<wsdl:part name="parameters" element="tns:RecuperarLineasPorUserIDYGrupo"/>
</wsdl:message>
<wsdl:message name="RecuperarLineasPorUserIDYGrupoSoapOut">
<wsdl:part name="parameters" element="tns:RecuperarLineasPorUserIDYGrupoResponse"/>
</wsdl:message>
<wsdl:portType name="ServicioWebHorariosProximosSoap">
<wsdl:operation name="RecuperarHorarioProgramadoPorParada">
<wsdl:input message="tns:RecuperarHorarioProgramadoPorParadaSoapIn"/>
<wsdl:output message="tns:RecuperarHorarioProgramadoPorParadaSoapOut"/>
</wsdl:operation>
<wsdl:operation name="RecuperarHorarioProximoPorParada">
<wsdl:input message="tns:RecuperarHorarioProximoPorParadaSoapIn"/>
<wsdl:output message="tns:RecuperarHorarioProximoPorParadaSoapOut"/>
</wsdl:operation>
<wsdl:operation name="RecuperarHorarioParadaInteligenteAndroi">
<wsdl:input message="tns:RecuperarHorarioParadaInteligenteAndroiSoapIn"/>
<wsdl:output message="tns:RecuperarHorarioParadaInteligenteAndroiSoapOut"/>
</wsdl:operation>
<wsdl:operation name="RecuperarHorarioInspectores">
<wsdl:input message="tns:RecuperarHorarioInspectoresSoapIn"/>
<wsdl:output message="tns:RecuperarHorarioInspectoresSoapOut"/>
</wsdl:operation>
<wsdl:operation name="RecuperarHorarioConInterno">
<wsdl:input message="tns:RecuperarHorarioConInternoSoapIn"/>
<wsdl:output message="tns:RecuperarHorarioConInternoSoapOut"/>
</wsdl:operation>
<wsdl:operation name="RecuperarHorarioConInternoYEmpresa">
<wsdl:input message="tns:RecuperarHorarioConInternoYEmpresaSoapIn"/>
<wsdl:output message="tns:RecuperarHorarioConInternoYEmpresaSoapOut"/>
</wsdl:operation>
<wsdl:operation name="RecuperarHorarioCuandoLlegaAndroid">
<wsdl:input message="tns:RecuperarHorarioCuandoLlegaAndroidSoapIn"/>
<wsdl:output message="tns:RecuperarHorarioCuandoLlegaAndroidSoapOut"/>
</wsdl:operation>
<wsdl:operation name="RecuperarMarkesinaCuandoLlegaAndroidPorUserId">
<wsdl:input message="tns:RecuperarMarkesinaCuandoLlegaAndroidPorUserIdSoapIn"/>
<wsdl:output message="tns:RecuperarMarkesinaCuandoLlegaAndroidPorUserIdSoapOut"/>
</wsdl:operation>
<wsdl:operation name="RecuperarVersionDBSQLiteVigenteAndroid">
<wsdl:input message="tns:RecuperarVersionDBSQLiteVigenteAndroidSoapIn"/>
<wsdl:output message="tns:RecuperarVersionDBSQLiteVigenteAndroidSoapOut"/>
</wsdl:operation>
<wsdl:operation name="RecuperarTodosPaisesAndroid">
<wsdl:input message="tns:RecuperarTodosPaisesAndroidSoapIn"/>
<wsdl:output message="tns:RecuperarTodosPaisesAndroidSoapOut"/>
</wsdl:operation>
<wsdl:operation name="RecuperarTodasProvinciasPorPaisAndroid">
<wsdl:input message="tns:RecuperarTodasProvinciasPorPaisAndroidSoapIn"/>
<wsdl:output message="tns:RecuperarTodasProvinciasPorPaisAndroidSoapOut"/>
</wsdl:operation>
<wsdl:operation name="RecuperarTodasCiudadesPorProvinciaAndroid">
<wsdl:input message="tns:RecuperarTodasCiudadesPorProvinciaAndroidSoapIn"/>
<wsdl:output message="tns:RecuperarTodasCiudadesPorProvinciaAndroidSoapOut"/>
</wsdl:operation>
<wsdl:operation name="RecuperarUserIdPorCiudadAndroid">
<wsdl:input message="tns:RecuperarUserIdPorCiudadAndroidSoapIn"/>
<wsdl:output message="tns:RecuperarUserIdPorCiudadAndroidSoapOut"/>
</wsdl:operation>
<wsdl:operation name="RecuperarHorarioCuandoLlegaDosAndroid">
<wsdl:input message="tns:RecuperarHorarioCuandoLlegaDosAndroidSoapIn"/>
<wsdl:output message="tns:RecuperarHorarioCuandoLlegaDosAndroidSoapOut"/>
</wsdl:operation>
<wsdl:operation name="RecuperarLineasPorParadaYGrupos">
<wsdl:input message="tns:RecuperarLineasPorParadaYGruposSoapIn"/>
<wsdl:output message="tns:RecuperarLineasPorParadaYGruposSoapOut"/>
</wsdl:operation>
<wsdl:operation name="RecuperarLineasPorParadaYGrupo">
<wsdl:input message="tns:RecuperarLineasPorParadaYGrupoSoapIn"/>
<wsdl:output message="tns:RecuperarLineasPorParadaYGrupoSoapOut"/>
</wsdl:operation>
<wsdl:operation name="RecuperarTodasLineasPorCallePrincipalEInterseccionYGrupo">
<wsdl:input message="tns:RecuperarTodasLineasPorCallePrincipalEInterseccionYGrupoSoapIn"/>
<wsdl:output message="tns:RecuperarTodasLineasPorCallePrincipalEInterseccionYGrupoSoapOut"/>
</wsdl:operation>
<wsdl:operation name="RecuperarLineasPorUserIDYGrupo">
<wsdl:input message="tns:RecuperarLineasPorUserIDYGrupoSoapIn"/>
<wsdl:output message="tns:RecuperarLineasPorUserIDYGrupoSoapOut"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="ServicioWebHorariosProximosSoap" type="tns:ServicioWebHorariosProximosSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="RecuperarHorarioProgramadoPorParada">
<soap:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarHorarioProgramadoPorParada" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarHorarioProximoPorParada">
<soap:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarHorarioProximoPorParada" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarHorarioParadaInteligenteAndroi">
<soap:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarHorarioParadaInteligenteAndroi" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarHorarioInspectores">
<soap:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarHorarioInspectores" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarHorarioConInterno">
<soap:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarHorarioConInterno" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarHorarioConInternoYEmpresa">
<soap:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarHorarioConInternoYEmpresa" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarHorarioCuandoLlegaAndroid">
<soap:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarHorarioCuandoLlegaAndroid" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarMarkesinaCuandoLlegaAndroidPorUserId">
<soap:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarMarkesinaCuandoLlegaAndroidPorUserId" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarVersionDBSQLiteVigenteAndroid">
<soap:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarVersionDBSQLiteVigenteAndroid" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarTodosPaisesAndroid">
<soap:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarTodosPaisesAndroid" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarTodasProvinciasPorPaisAndroid">
<soap:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarTodasProvinciasPorPaisAndroid" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarTodasCiudadesPorProvinciaAndroid">
<soap:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarTodasCiudadesPorProvinciaAndroid" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarUserIdPorCiudadAndroid">
<soap:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarUserIdPorCiudadAndroid" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarHorarioCuandoLlegaDosAndroid">
<soap:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarHorarioCuandoLlegaDosAndroid" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarLineasPorParadaYGrupos">
<soap:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarLineasPorParadaYGrupos" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarLineasPorParadaYGrupo">
<soap:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarLineasPorParadaYGrupo" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarTodasLineasPorCallePrincipalEInterseccionYGrupo">
<soap:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarTodasLineasPorCallePrincipalEInterseccionYGrupo" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarLineasPorUserIDYGrupo">
<soap:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarLineasPorUserIDYGrupo" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="ServicioWebHorariosProximosSoap12" type="tns:ServicioWebHorariosProximosSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="RecuperarHorarioProgramadoPorParada">
<soap12:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarHorarioProgramadoPorParada" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarHorarioProximoPorParada">
<soap12:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarHorarioProximoPorParada" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarHorarioParadaInteligenteAndroi">
<soap12:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarHorarioParadaInteligenteAndroi" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarHorarioInspectores">
<soap12:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarHorarioInspectores" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarHorarioConInterno">
<soap12:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarHorarioConInterno" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarHorarioConInternoYEmpresa">
<soap12:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarHorarioConInternoYEmpresa" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarHorarioCuandoLlegaAndroid">
<soap12:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarHorarioCuandoLlegaAndroid" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarMarkesinaCuandoLlegaAndroidPorUserId">
<soap12:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarMarkesinaCuandoLlegaAndroidPorUserId" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarVersionDBSQLiteVigenteAndroid">
<soap12:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarVersionDBSQLiteVigenteAndroid" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarTodosPaisesAndroid">
<soap12:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarTodosPaisesAndroid" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarTodasProvinciasPorPaisAndroid">
<soap12:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarTodasProvinciasPorPaisAndroid" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarTodasCiudadesPorProvinciaAndroid">
<soap12:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarTodasCiudadesPorProvinciaAndroid" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarUserIdPorCiudadAndroid">
<soap12:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarUserIdPorCiudadAndroid" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarHorarioCuandoLlegaDosAndroid">
<soap12:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarHorarioCuandoLlegaDosAndroid" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarLineasPorParadaYGrupos">
<soap12:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarLineasPorParadaYGrupos" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarLineasPorParadaYGrupo">
<soap12:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarLineasPorParadaYGrupo" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarTodasLineasPorCallePrincipalEInterseccionYGrupo">
<soap12:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarTodasLineasPorCallePrincipalEInterseccionYGrupo" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="RecuperarLineasPorUserIDYGrupo">
<soap12:operation soapAction="http://serviciosWebSms.efibus.com.ar/RecuperarLineasPorUserIDYGrupo" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="ServicioWebHorariosProximos">
<wsdl:port name="ServicioWebHorariosProximosSoap" binding="tns:ServicioWebHorariosProximosSoap">
<soap:address location="http://servicioswebsms.efibus.com.ar/ServicioWebHorariosProximos.asmx"/>
</wsdl:port>
<wsdl:port name="ServicioWebHorariosProximosSoap12" binding="tns:ServicioWebHorariosProximosSoap12">
<soap12:address location="http://servicioswebsms.efibus.com.ar/ServicioWebHorariosProximos.asmx"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
<?xml version="1.0" encoding="utf-8"?>
<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/">
<v:Header />
<v:Body>
<RecuperarHorarioCuandoLlegaAndroid xmlns="http://serviciosWebSms.efibus.com.ar/" id="o0" c:root="1">
<identificadorParada i:type="d:string">N4280</identificadorParada>
<userId i:type="d:string">30d72c97-568b-4dcb-b239-13c0a318348c</userId>
<descripcionLinea i:type="d:string">LINEA 110</descripcionLinea>
<usuario i:type="d:string">usuarioefisat</usuario>
<clave i:type="d:string">efisat</clave>
<codigoLineaGrupo i:type="d:int">1055</codigoLineaGrupo>
</RecuperarHorarioCuandoLlegaAndroid>
</v:Body>
</v:Envelope>
<?xml version="1.0" encoding="utf-8"?>
<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/">
<v:Header />
<v:Body>
<RecuperarHorarioCuandoLlegaAndroid xmlns="http://serviciosWebSms.efibus.com.ar/" id="o0" c:root="1">
<identificadorParada i:type="d:string">U8210</identificadorParada>
<userId i:type="d:string">0d7c6b60-7b7f-4833-ace7-e633dc1a33c9</userId>
<descripcionLinea i:type="d:string">LINEA 8</descripcionLinea>
<usuario i:type="d:string">usuarioefisat</usuario>
<clave i:type="d:string">efisat</clave>
<codigoLineaGrupo i:type="d:int">1046</codigoLineaGrupo>
</RecuperarHorarioCuandoLlegaAndroid>
</v:Body>
</v:Envelope>
CODIGO_LINEA_GRUPO IDENTIFICADOR_PARADA FECHA RANGO_HORARIO DIFERENCIA_TIEMPO
1055 N4280 23/08/2015 2 180
1055 N4280 23/08/2015 3 138
1055 N4280 23/08/2015 3 125
1055 N4280 23/08/2015 3 150
1046 U8210 23/08/2015 3 132
1046 U8210 23/08/2015 3 160
1055 N4280 24/08/2015 2 194
1055 N4280 24/08/2015 2 116
1046 U8210 24/08/2015 2 225
1046 U8210 24/08/2015 2 180

Existe un período de tiempo entre que el sistema informa que un colectivo está ARRIBANDO a la parada y éste llega a la misma.

En busca de obtener una mayor precisión al momento de informar el arribo de un colectivo se pensó en realizar mediciones visuales para estimar la diferencia de tiempo. Se pudo comprobar que, en general, a partir del momento en que el sistema informa "ARRIBANDO" y el colectivo alcanza la parada, transcurren unos 3 minutos.

Dado que el sistema no devuelve las coordenadas geográficas de un colectivo sino una cadena de texto, conteniendo el tiempo estimado de arribo, se considera entonces la realización de una cierta cantidad de mediciones con el fin de llegar a un número que permita minimizar la diferencia de tiempo anunciada. Tales mediciones se realizan tomando como tiempo inicial el momento en que el sistema devuelve "ARRIBANDO" para un colectivo dado y luego cronometrando el tiempo transcurrido hasta que el colectivo llega a la parada. De esta forma, con estas mediciones se busca obtener un "tiempo promedio de arribo".

# RANGO_HORARIO
0 Diurno
1 Matutino
2 Vespertino
3 Nocturno
@kbzone
Copy link

kbzone commented Apr 17, 2017

Excelente laburo, apenas tenga tiempo libre voy a hacer algunas pruebas usando ésto. Gracias.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment