PHP-exempel

187 views
Skip to first unread message

ebol...@gmail.com

unread,
Feb 11, 2014, 4:36:03 AM2/11/14
to oppet-api-trafi...@googlegroups.com
Hallå,
 
Det känns som jag tappat bort mig lite i tänket kring att posta requests till en URL.
Jag är tillräckligt insatt i både SOAP och REST-API:er för att få sådana lösningar att fungera, men skulle behöva en knuff i rätt riktning vad det gäller postningen.
Eller gör jag det svårare än vad det är?
 
Har labbat både med att sätta ihop en Array av alla parametrar och en string av requestet, men inget verkar fungera.
 
Någon som har lust att ge mig exempel på hur jag får iväg nedan request till API:t:
"<REQUEST> <LOGIN authenticationkey="openapiconsolekey" /> <QUERY objecttype="TrainStation"> <FILTER /> </QUERY> </REQUEST>"
(Hämtat från Konsolsidan)
 
/Carl

Magnus Pettersson

unread,
Feb 11, 2014, 7:06:28 AM2/11/14
to oppet-api-trafi...@googlegroups.com
Hej

Din "klient" skickar med frågan i anropet, t.ex. så som formulärdata skickas till servern på en webbsida. Under "Kom igång - Exempelkod" finns ett exempel på där data skickas med AJAX och ett exempel som använder .NET:s WebClient. Med PHP finns ett antal olika sätt, jag vet inte hur du gör dina anrop men med t.ex. Curl så anger du din sträng med frågan till curl-objektet.

(Om någon PHP-kunnig utvecklare känner för att dela med sig av ett exempel, t.ex. en portning av javascript-exemplet "Sök avgångar från en station" eller liknande så lägger jag gärna upp det bland de andra exemplen.)

Exempel på en sida som visar returnerad stationsinfo för Stockholm C.

<html>
 <head>
  <title>PHP Request</title>
 </head>
 <body>
<?php 
$xml_data ='<REQUEST>'.
'<LOGIN authenticationkey="{YourAuthenticationKey}" />'.
'<QUERY objecttype="TrainStation">'.
'<FILTER>'.
'<EQ name="LocationSignature" value="Cst" />'.
'</FILTER>'.
'</QUERY>'.
 '</REQUEST>';
 
 
$ch = curl_init($URL);
curl_setopt($ch, CURLOPT_MUTE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($ch, CURLOPT_POSTFIELDS, "$xml_data");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
print htmlspecialchars($output);
?>
 </body>
</html>

ebol...@gmail.com

unread,
Feb 11, 2014, 8:20:46 AM2/11/14
to oppet-api-trafi...@googlegroups.com
Hallå,
 
Precis vad jag behövde, det var just querysträngen som jag hade satt ihop på ett felaktigt sätt...
 
Stort tack!
 
/Carl
Reply all
Reply to author
Forward
0 new messages