API Open Data Temps réel de la RATP

Last modified on October 2, 2026 • 2 min read • 326 words

Télécharger l’application apex de démo depuis Github.

Pour utiliser l’API  API Open Data Temps réel  de la RATP depuis Oracle Apex, c’est à dire depuis une database Oracle, on peut utiliser la méthode suivante:

Appel  d’un service  

Liste des stations pour une ligne donnée (RER A dans l’example ci-dessous)

declare
 l_envelope CLOB;
BEGIN

-- Build a SOAP document appropriate for the web service.
 l_envelope := '
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wsiv="http://wsiv.ratp.fr" xmlns:xsd="http://wsiv.ratp.fr/xsd">
 <soap:Header/>
   <soap:Body>
     <wsiv:getStations> 
      <wsiv:station>
        <xsd:line>
          <xsd:id>RA</xsd:id>
        </xsd:line>
       </wsiv:station>
     </wsiv:getStations>
   </soap:Body>
</soap:Envelope>
';

apex_web_service.make_request(
 p_url => 'http://opendata-tr.ratp.fr/wsiv/services/Wsiv',
 p_collection_name => 'RATP',
 p_version => '1.2',
 p_envelope => l_envelope );

end;

Le document XML est enregistré dans la colonne nommée XMLTYPE001 d’une collection APEX par la procédure apex_web_service.make_request .

Parsing du résultat  

Le résultat est enregistré dans une collection dont le nom, arbitrairement donné, est : ‘RATP’.

Observer que l’on précise des namespaces dans l’appel à la fonction XMLTABLE :

SELECT xt.name Station
FROM apex_collections x,
 XMLTABLE(
     XMLNAMESPACES ('http://www.w3.org/2003/05/soap-envelope' AS "soapenv",
                    'http://wsiv.ratp.fr' AS "ns2", 
                    default 'http://wsiv.ratp.fr/xsd' 
     ),
     '/soapenv:Envelope/soapenv:Body/ns2:getStationsResponse/ns2:return/stations' PASSING x.xmltype001
     COLUMNS 
        name VARCHAR2(100) PATH 'name/text()'
 ) xt
where collection_name = 'RATP'
order by station

Conclusion  

Une fois que les données sont disponibles sous forme de table, il est très simple d’utiliser n’importe quel composant d’Apex pour restituer les informations.

image image

Requete pour obtenir les prochains passages  

SELECT xt.codem code, to_date(xt.stationsDates,'YYYYMMDDHH24MI') passage, to_date(xt.stationsDates,'YYYYMMDDHH24MI') delai, xt.direction direction 
FROM apex_collections x,
 XMLTABLE(
 XMLNAMESPACES ('http://www.w3.org/2003/05/soap-envelope' AS "soapenv",
 'http://wsiv.ratp.fr' AS "ns2",
 default 'http://wsiv.ratp.fr/xsd'
 ),
 '/soapenv:Envelope/soapenv:Body/ns2:getMissionsNextResponse/ns2:return/missions' PASSING x.xmltype001
 COLUMNS 
 stationsDates VARCHAR2(100) PATH 'stationsDates/text()',
 codem VARCHAR2(100) PATH 'code/text()',
 direction VARCHAR2(100) PATH 'direction/sens/text()'
 ) xt
where COLLECTION_NAME='RATPH'
order by passage ASC

Code PLSQL pour obtenir les prochains passages  

declare
 l_envelope CLOB;
BEGIN

-- Build a SOAP document appropriate for the web service.
 l_envelope := '<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wsiv="http://wsiv.ratp.fr" xmlns:xsd="http://wsiv.ratp.fr/xsd">
 <soap:Header/>
 <soap:Body>
 <wsiv:getMissionsNext>
 <wsiv:station>
 <xsd:id>' || :P6_STATIONID ||'</xsd:id>
 <xsd:line>
 <xsd:id>' || :P4_LIGNE ||'</xsd:id>
 </xsd:line>
 <xsd:name></xsd:name>
 </wsiv:station>
 <wsiv:direction> 
 <xsd:sens>*</xsd:sens>
 </wsiv:direction>
 </wsiv:getMissionsNext>
 </soap:Body>
</soap:Envelope>
';apex_web_service.make_request(
 p_url => 'http://opendata-tr.ratp.fr/wsiv/services/Wsiv',
 p_collection_name => 'RATPH',
 p_version => '1.2',
 p_envelope => l_envelope );
end;
Follow me

I work on everything coding and tweet developer memes