{"id":4132,"date":"2017-12-15T20:52:50","date_gmt":"2017-12-15T19:52:50","guid":{"rendered":"http:\/\/gpmfactory.com\/?p=4132"},"modified":"2017-12-16T11:50:15","modified_gmt":"2017-12-16T10:50:15","slug":"api-open-data-temps-reel-de-la-ratp","status":"publish","type":"post","link":"https:\/\/gpmfactory.com\/index.php\/2017\/12\/15\/api-open-data-temps-reel-de-la-ratp\/","title":{"rendered":"API Open Data Temps r\u00e9el de la RATP"},"content":{"rendered":"<p><a href=\"https:\/\/github.com\/patrickmonaco\/apex-sandbox\">T\u00e9l\u00e9charger l&rsquo;application apex de d\u00e9mo depuis Github.<\/a><\/p>\n<p>Pour utiliser l&rsquo;API\u00a0<a href=\"https:\/\/data.ratp.fr\/page\/temps-reel\/\"><span class=\"titre-temps-reel\">API Open Data Temps r\u00e9el<\/span>\u00a0 de la RATP<\/a> depuis Oracle Apex, c&rsquo;est \u00e0 dire depuis une database Oracle, on peut utiliser la m\u00e9thode suivante:<\/p>\n<h3>Appel\u00a0 d&rsquo;un service<\/h3>\n<p>Liste des stations pour une ligne donn\u00e9e (RER A dans l&rsquo;example ci-dessous)<\/p>\n<pre>declare\n l_envelope CLOB;\nBEGIN\n\n-- Build a SOAP document appropriate for the web service.\n l_envelope := '\n&lt;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\"&gt;\n &lt;soap:Header\/&gt;\n   &lt;soap:Body&gt;\n     &lt;wsiv:getStations&gt; \n      &lt;wsiv:station&gt;\n        &lt;xsd:line&gt;\n          &lt;xsd:id&gt;RA&lt;\/xsd:id&gt;\n        &lt;\/xsd:line&gt;\n       &lt;\/wsiv:station&gt;\n     &lt;\/wsiv:getStations&gt;\n   &lt;\/soap:Body&gt;\n&lt;\/soap:Envelope&gt;\n';\n\napex_web_service.make_request(\n p_url =&gt; 'http:\/\/opendata-tr.ratp.fr\/wsiv\/services\/Wsiv',\n p_collection_name =&gt; 'RATP',\n p_version =&gt; '1.2',\n p_envelope =&gt; l_envelope );\n\nend;<\/pre>\n<p>Le document XML est enregistr\u00e9 dans la colonne nomm\u00e9e XMLTYPE001 d&rsquo;une <a href=\"https:\/\/docs.oracle.com\/database\/121\/AEAPI\/apex_collection.htm#AEAPI658\">collection APEX<\/a> par la proc\u00e9dure <a href=\"https:\/\/docs.oracle.com\/database\/121\/AEAPI\/apex_web_service.htm#AEAPI1945\">apex_web_service.make_request<\/a>.<\/p>\n<h3>Parsing du r\u00e9sultat<\/h3>\n<p>Le r\u00e9sultat est enregistr\u00e9 dans une collection dont le nom, arbitrairement donn\u00e9, est : &lsquo;RATP&rsquo;.<\/p>\n<p>Observer que l&rsquo;on pr\u00e9cise des namespaces dans l&rsquo;appel \u00e0 la fonction <a href=\"https:\/\/docs.oracle.com\/cd\/B19306_01\/server.102\/b14200\/functions228.htm\">XMLTABLE<\/a>:<\/p>\n<pre>SELECT xt.name Station\nFROM apex_collections x,\n XMLTABLE(\n     XMLNAMESPACES ('http:\/\/www.w3.org\/2003\/05\/soap-envelope' AS \"soapenv\",\n                    'http:\/\/wsiv.ratp.fr' AS \"ns2\", \n                    default 'http:\/\/wsiv.ratp.fr\/xsd' \n     ),\n     '\/soapenv:Envelope\/soapenv:Body\/ns2:getStationsResponse\/ns2:return\/stations' PASSING x.xmltype001\n     COLUMNS \n        name VARCHAR2(100) PATH 'name\/text()'\n ) xt\nwhere collection_name = 'RATP'\norder by station<\/pre>\n<h3>Conclusion<\/h3>\n<p>Une fois que les donn\u00e9es sont disponibles sous forme de table, il est tr\u00e8s simple d&rsquo;utiliser n&rsquo;importe quel composant d&rsquo;Apex pour restituer les informations.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4140 size-large\" src=\"http:\/\/gpmfactory.com\/wp-content\/uploads\/2017\/12\/ratp2-1024x564.png\" alt=\"\" width=\"720\" height=\"397\" srcset=\"https:\/\/gpmfactory.com\/wp-content\/uploads\/2017\/12\/ratp2-1024x564.png 1024w, https:\/\/gpmfactory.com\/wp-content\/uploads\/2017\/12\/ratp2-300x165.png 300w, https:\/\/gpmfactory.com\/wp-content\/uploads\/2017\/12\/ratp2-768x423.png 768w, https:\/\/gpmfactory.com\/wp-content\/uploads\/2017\/12\/ratp2.png 1130w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/p>\n<pre><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4141 size-large\" src=\"http:\/\/gpmfactory.com\/wp-content\/uploads\/2017\/12\/ratp3-1024x558.png\" alt=\"\" width=\"720\" height=\"392\" srcset=\"https:\/\/gpmfactory.com\/wp-content\/uploads\/2017\/12\/ratp3-1024x558.png 1024w, https:\/\/gpmfactory.com\/wp-content\/uploads\/2017\/12\/ratp3-300x163.png 300w, https:\/\/gpmfactory.com\/wp-content\/uploads\/2017\/12\/ratp3-768x418.png 768w, https:\/\/gpmfactory.com\/wp-content\/uploads\/2017\/12\/ratp3.png 1146w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/p>\n<h3>Requete pour obtenir les prochains passages<\/h3>\n<pre>SELECT xt.codem code, to_date(xt.stationsDates,'YYYYMMDDHH24MI') passage, to_date(xt.stationsDates,'YYYYMMDDHH24MI') delai, xt.direction direction \nFROM apex_collections x,\n XMLTABLE(\n XMLNAMESPACES ('http:\/\/www.w3.org\/2003\/05\/soap-envelope' AS \"soapenv\",\n 'http:\/\/wsiv.ratp.fr' AS \"ns2\",\n default 'http:\/\/wsiv.ratp.fr\/xsd'\n ),\n '\/soapenv:Envelope\/soapenv:Body\/ns2:getMissionsNextResponse\/ns2:return\/missions' PASSING x.xmltype001\n COLUMNS \n stationsDates VARCHAR2(100) PATH 'stationsDates\/text()',\n codem VARCHAR2(100) PATH 'code\/text()',\n direction VARCHAR2(100) PATH 'direction\/sens\/text()'\n ) xt\nwhere COLLECTION_NAME='RATPH'\norder by passage ASC<\/pre>\n<h3>Code PLSQL pour obtenir les prochains passages<\/h3>\n<pre>declare\n l_envelope CLOB;\nBEGIN\n\n-- Build a SOAP document appropriate for the web service.\n l_envelope := '&lt;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\"&gt;\n &lt;soap:Header\/&gt;\n &lt;soap:Body&gt;\n &lt;wsiv:getMissionsNext&gt;\n &lt;wsiv:station&gt;\n &lt;xsd:id&gt;' || :P6_STATIONID ||'&lt;\/xsd:id&gt;\n &lt;xsd:line&gt;\n &lt;xsd:id&gt;' || :P4_LIGNE ||'&lt;\/xsd:id&gt;\n &lt;\/xsd:line&gt;\n &lt;xsd:name&gt;&lt;\/xsd:name&gt;\n &lt;\/wsiv:station&gt;\n &lt;wsiv:direction&gt; \n &lt;xsd:sens&gt;*&lt;\/xsd:sens&gt;\n &lt;\/wsiv:direction&gt;\n &lt;\/wsiv:getMissionsNext&gt;\n &lt;\/soap:Body&gt;\n&lt;\/soap:Envelope&gt;\n';apex_web_service.make_request(\n p_url =&gt; 'http:\/\/opendata-tr.ratp.fr\/wsiv\/services\/Wsiv',\n p_collection_name =&gt; 'RATPH',\n p_version =&gt; '1.2',\n p_envelope =&gt; l_envelope );\nend;<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>T\u00e9l\u00e9charger l&rsquo;application apex de d\u00e9mo depuis Github. Pour utiliser l&rsquo;API\u00a0API Open Data Temps r\u00e9el\u00a0 de la RATP depuis Oracle Apex, c&rsquo;est \u00e0 dire depuis&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,7,1],"tags":[],"ppma_author":[150],"class_list":["post-4132","post","type-post","status-publish","format-standard","hentry","category-demo-2","category-dev","category-non-classe"],"authors":[{"term_id":150,"user_id":1,"is_guest":0,"slug":"admin8700","display_name":"Patrick","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/209d5ed69b74d288390621ab4c1d3773?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/posts\/4132","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/comments?post=4132"}],"version-history":[{"count":9,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/posts\/4132\/revisions"}],"predecessor-version":[{"id":4147,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/posts\/4132\/revisions\/4147"}],"wp:attachment":[{"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/media?parent=4132"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/categories?post=4132"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/tags?post=4132"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/ppma_author?post=4132"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}