Tenshi
June 19, 2020, 9:24pm
1
Hi,
My website has been using Toll Calculator API v1 successfully and I am attempting to upgrade to v2. I am using PHP to connect, here is what I have so far.
$data = array("polyline" => "".$encodedPolyLine."", "vehicleClass" => "B", "departureTime" => $travelDateTime);
$data_string = json_encode($data);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "https://api.transport.nsw.gov.au/v2/roads/toll_calc/data");
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Authorization: apikey XXXXX',
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string)
));
curl_setopt($curl, CURLOPT_TIMEOUT, 5);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
$result = curl_exec($curl);
curl_close($curl);
return $result;
If I take out the POST fields it connects fine and give the data like Explore API - Toll Calculator API v2 | TfNSW Open Data Hub and Developer Portal
Once I add POST data I get a “Requested resource was not found” error.
I use DATE_ISO8601 for the date format. I get the polyline from Google maps api.
Any idea what I am doing wrong?
Thank you.
jxeeno
June 20, 2020, 2:38am
2
Hi @Tenshi ,
Looks like you’re pointing your request to the /data
endpoint. Try sending it to the /match
endpoint instead:
curl_setopt($curl, CURLOPT_URL, "https://api.transport.nsw.gov.au/v2/roads/toll_calc/match");
Tenshi
June 20, 2020, 3:03am
3
Thanks @jxeeno ,
Good point, I have made that update to
curl_setopt($curl, CURLOPT_URL, “https://api.transport.nsw.gov.au/v2/roads/toll_calc/match ”);
but unfortunately got the same result:
{
“ErrorDetails”:
{
“TransactionId”:“000001722cab8356-4e7eddf”,
“ErrorDateTime”:“2020-06-19T19:58:47.419-07:00”,
“Message”:“Requested resource was not found”,
“RequestedUrl”:“/v2/roads/toll_calc/match”,
“RequestedMethod”:“POST”
}
}
Thank you for having a look for me.
jxeeno
June 20, 2020, 6:05am
4
Hmm, just gave it a go and it worked fine when I sent a valid ISO date time and polyline. But got the same error back whenever I provided an invalid polyline or ISO date time.
See below example:
$encodedPolyLine = "tc_mEgb_y[@Nz@jK@@BX@?@@@??@@?@@?@?@?@?@?@?@A@?@A@A?@H?NABb@`E\\`DJpAhAhI?V?FB?B@@@BB?D?BABABC@C@~@dJhD~\\l@CnAK~@MlB[j@Mz@U`Bg@pAc@~Ag@t@Sf@Kl@It@I\\PRHh@ZFHDLBP?DPtDBb@RnENnCHhCDz@DlAD~@LbCHhARvBVnCbB|KV~AZnBbArFPp@X`ATv@Vv@Tn@Zr@b@|@d@t@^l@^j@bA~AfAfBbAbBf@v@\\n@`@x@`@bA`@hAPn@TbAThAVjBJdADr@DtA@nACbBIdBKlAQrAUnA_@zAc@xAi@zAu@xBY~@Sr@Qp@Ov@Y~AQlAKz@IjAGnACr@At@AnA@fADtAFnAJlAJfALx@Jr@ThAXhAd@|AtAvDv@pBf@tAbAlC|@`Cx@lCZhAXdAV~A^tB^rBZvBHv@Ht@NxATjAF|@NxBJ`BLlBJfBj@bJV|DFhANfAHhAVzDNfCL|ANbBLzALrA^lCPnAl@zDb@`CXbBXhBZfCT`BV`Bx@rEn@vDrAxHZ`BT`Ap@dDd@jCz@pFZtBVlBJn@XxBDZr@rGLjAJrAL|A`@zFz@nMn@jNTbDCbDIlCCn@E`@OdBK~@OfAY`B[xAm@zB]lAs@lB{@bBe@~@iBfC}AjBuAvAuBhB{A~@i@\\mGbEaJvFs@b@cCzA{CpB_DrBqD|ByClBqDdCqDpCm@f@uAjAwBnBwDpDsDzDcD|D_DbEkA~AwFlI}A`CwDxFgC~D{BlD{CvFwFlKsAtCeChFqAvCOZsBfFiB`FuAjDeBfFeBxFmBtGcAvDqAhFo@nCuAdGgB~IiBfKyA`Ig@rCiArGo@lD_DxQaAhGa@jCiAjHa@jD]~CYrC]|CoAlNcFpo@i@lIk@hMShFQrGSnIUlHi@zRUrKYhJc@lKSxH[|JIrCKfDSvGMdCQzCWtDSvBSlBc@xDa@rD{ArMm@xEm@tF{@dH}@tH_AhI{@jHs@xFOjAg@jEYxBu@lGMxAGlACxA?xADfBL`BNjAV|AZpAXbAf@tA^x@`@x@h@|@j@t@l@v@|@|@p@j@f@\\b@Xh@Z`@RzBz@z@Rn@Lt@JvAR`CX`MzAp@HtOjBfPlB|MjB~IfA~Dd@lAJvAD|AA`BEbCYlB_@xPiFnAYxB[zAMrAIhCC`DNlKtArFt@fP~BfCZpAHpBFzBEzCSpCe@tBm@bBm@lB}@rAu@rAcApAmA^a@z@cA|@iABCv@gA`B{Cp@wAnAoCdAiCrAsCtAcCjBeDzAmBfBqB|AuAlCuBxAy@|A{@bCeA~Ak@`Bc@xBi@jB[hBQn@G~GIbERrAL|AVzDt@~@RrBb@`B\\`BZ`Dl@dE~@|Bd@pAXjATbEv@tKtBdC^tCb@rDn@~RfCpOfBjAN|Q|B~Fp@xFp@vAHf@BpGZzBJ`JLzB?tCBjFGpA@rND|EFzEMjDg@fA[zBy@hDmB|D_CzDuBbFsCjBcApDsAlEqArC_@jHo@dE@dELbL\\~H^~F\\x@Fj@D~@HnCTnMnArKrApIfBzIvBhA^`D`AlC~@|DvAhChAnCjAxAl@~Al@rBr@jCh@hEn@|Cj@bARjEz@tE`ArFlA|Bl@jBf@xBp@bCj@`B`@xBh@hDz@pDr@jB`@hBX`BVnBVpE`@|Df@hGh@bKhAj@Fx@JvBZj@FdC^zCt@j@PlD~AvAr@`Ah@rBhAxBxAh@ZPWzEoGjBwEhAsCjB{DbBsBjDyDtBoBfDeEtBkDfAsCf@yDN{CIsGU{JAc@?QVATAjAI|@Ib@EHEHAHBDD@BBJAJEHEDEb@Er@Gj@Qv@O~@K`AGlAAbA?x@DdANrAN`ARz@Rv@d@bARb@P\\b@n@b@f@f@f@d@b@lAv@TVTVRXPXRb@|@bCrAjDLTLNFBFH~@Ld@?\\C`@I\\Qf@e@j@s@b@k@f@g@f@a@j@[d@Qd@Oh@Kj@Gt@Av@Bp@J|@RbAf@z@n@h@^p@`@|@Vd@Fr@Dn@Ah@Gl@Md@Q^ORU@EBEDEDCFAD@B@BBDD@F@FAFADCD@f@F\\Jp@Fx@B|@?b@?^C~@Et@In@I\\S`@[n@M`@G`@?XF?DBDDBF?F~CD@G@EDCDCD?D@FYVm@PWZa@d@a@^Sf@Qt@KTAxAGP@B@LUDMHQ`@c@b@aAJOFM^_@v@[t@YHITQVYHKp@wA";
$travelDateTime = '2020-06-20T06:01:55.978Z';
$data = array("polyline" => "".$encodedPolyLine."", "vehicleClass" => "B", "departureTime" => $travelDateTime);
$data_string = json_encode($data);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "https://api.transport.nsw.gov.au/v2/roads/toll_calc/match");
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Authorization: apikey xxx',
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string)
));
curl_setopt($curl, CURLOPT_TIMEOUT, 5);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
$result = curl_exec($curl);
curl_close($curl);
echo $result;
Tenshi
June 20, 2020, 7:07am
5
Thank you @jxeeno ,
I think the polyline is okay, I pushed it through V1 and it got lane cover road and tunnel, It must be my date format.
Thank you for helping with this. I will have another go at it tomorrow and update this thread with what I did wrong in case others slip on on this change over.
Cheers.
Thanks for jumping in here @jxeeno and helping out!