บทนำ

สำหรับระบบการเรียกข้อมูลจาก Traffy นั้นทางเราไม่อนุญาติให้ดึงข้อมูลโดยตรง
ผู้ที่จะใช้งานนั้นจะต้องทำการลงทะเบียน website ที่ใช้งานเพื่อให้ได้ appid และ key สำหรับใช้ดึงข้อมูล
โดยการใช้งาน APPID นั้นแบ่งเป็น 3 วิธี

วิธีที่ 1 web referer

เหมาะสำหรับนักพัฒนาที่ต้องการนำข้อมูลมาแสดงบน website ของตนเอง
โดยวิธีนี้เป็นการนำ link ไปใส่ใน website ของตนได้ทันที
โดยเวลาลง appid จะต้องลงที่ชื่อ url ตรงกับ page ที่เรียกไว้เช่น

วิธีการสร้าง appid สำหรับ web referer:

  • login ที่หน้า api.traffy.in.th/apis/ กรณีที่ยังไม่ได้ลงทะเบียนให้ลงทะเบียนก่อน
  • เมื่อเข้าระบบให้กดปุ่ม “เพิ่ม”
  • กรอก url ที่ต้องการให้ข้อมูลปรากฏ

  • เมื่อท่านกดปุ่ม ตกลง แล้วจะได้ appid และ key ดังภาพ

ตัวอย่าง

เขียน html สำหรับดึงข้อมูลจราจรโดยเข้าจาก โดยตัวอย่างนี้ใช้ APPID คือ 0000001
โดยลงทะเบียนสำหรับในงานบน url “http://athena.traffy.in.th/apis/”
โดยหากท่านต้องการข้อมูลที่เป็น txt ได้แก่ api getIncident,getCL เป็นต้น
ท่านสามารถใช้ tag html <a hef=”[api url]”>
หากต้องการข้อมูลที่แสดงเป็นภาพท่านสามารถ <img src=”[api url]”>

ยกตัวอย่าง การใช้เรียกข้อมูล

<a href="http://athena.traffy.in.th/apis/apitraffy.php?api=getCL&q=all&key=[your key]&appid=[app id]>

ยกตัวอย่าง การเรียกข้อมูลประเภทภาพ

<img src="http://api.traffy.in.th/apis/apitraffy.php?api=getcctvimg&q=all&key=[your key]&appid=[app id]>

ตัวอย่างการใช้ webpage ที่ใช้

http://athena.traffy.in.th/apis/show.php

แต่หากเข้าด้วยชื่อ domain อื่นๆ เช่นเข้าด้วย

http://api.traffy.in.th/apis/show.php

จะไม่สามารถนำข้อมูลมาแสดงได้เนื่องจาก appid ไม่ตรงกับที่ลงทะเบียนไว้

วิธีที่2 server sync

เหมาะสำหรับนักพัฒนาที่ต้องการ sync ข้อมูลจราจรโดยวิธีนี้จำเป็นต้องลงทะเบียน server ที่ใช้สำหรับดึงข้อมูลโดยจะต้องเป็น fix ip เท่านั้นจึงสามารถใช้วิธีนี้ได้

วิธีการสร้าง appid สำหรับ server sync

  • login ที่หน้า api.traffy.in.th/apis/ กรณีที่ยังไม่ได้ลงทะเบียนให้ลงทะเบียนก่อน
  • เมื่อเข้าระบบให้กดปุ่ม “เพิ่ม”
  • กรอก ip address server ที่ท่านต้องการ sync ข้อมูลซึ่งต้องเป็น fixed ip เท่านั้น
  • ทดลองเขียนโปรแกรมดึงข้อมูลจาก server

ตัวอย่างการดึงข้อมูลจาก server ด้วย php

<?php
     $url = "http://athena.traffy.in.th/apis/apitraffy.php?format=XML&api=getIncident&key=XXX&appid=0000009X";
     $web = fopen($url,'r');
     $xml  = stream_get_contents($web);
     echo $xml;
     fclose($web);
?>

หมายเหตุ: กรณีที่ user ไม่ได้นำโปรแกรมไปทำงานบน server ที่ไม่ได้ลงทะเบียนไว้หรือใส่ ip address ผิดจากที่ลงทะเบียน จะได้ response กลับมาดังนี้ Wrong ip name. you ip is [YOUR IP ADDRESS], Please use api on registered server. ให้นำ ip address ที่ปรากฏใน response มาสร้าง appid เพิ่มเติมสำหรับ ip นั้นๆ และให้ใช้ key และ appid ในโปรแรกมสำหรับการ sync ข้อมูลของท่าน

วิธีที่3 session key

เหมาะสำหรับนักพัฒนา application ทั่วไปหรือมี server ที่ไม่สามารถ fixed ip ของตนเองได้โดยวิธีนี้ผู้พัฒนาจำเป็นจะต้องสร้าง session key สำหรับเรียกใช้ข้อมูลตามรูปแบบที่ทางเรากำหนดไว้  โดย session key นี้สามารถใช้งานได้ 1 วัน

วิธีการสร้าง session key

  • นำ appid ที่มีไปขอ random string ที่ http://api.traffy.in.th/apis/getKey.php?appid=[app id] โดยที่ [app id] เป็นหมายเลขที่ได้จากการลงทะเบียนของเรา
  • ถ้าหาก appid ของคุณถูกต้องแล้วคุณจะได้ random string กลับมา
  • ให้สร้าง session key ดังนี้
    • ส่วนแรกสร้างจาก appid+randomstring และเข้ารหัสด้วย md5
    • ส่วนที่สองสร้างจาก appid + randomstring และเข้ารหัสด้วย md5
    • seesion key = ส่วนแรก + ส่วนที่สอง
  • session key ที่ได้สามารถนำไปเรียกใช้ข้อมูลจาก api ได้ตามปกติ

ตัวอย่างเขียนด้วย php

<?php
     //ขั้นตอนที่ 1: สร้าง random string
     $appid= 'XXXXXXXX';
     $hiddenkey = 'XXXXXXXXX';
     $getKeyURL = "http://api.traffy.in.th/apis/getKey.php?appid=$appid";
     $web = fopen($getKeyURL,'r');
     $keyTxt = stream_get_contents($web);

     //ขั้นตอนที่ 2 สร้าง session key
     $passKey = md5($appid.$keyTxt). md5($hiddenkey.$keyTxt);

     //ขั้นตอนที่ 3 เรียกใช้ข้อมูลจาก service api
     $service = "http://api.traffy.in.th/apis/apitraffy.php";
     $r = fopen("$service?api=getLinkALLInfo&appid=$appid&key=$passKey&format=XML","r");
     $response= stream_get_contents($r);
      header('Content-Type:text/xml');
     echo $response;
     fclose($web);
     fclose($r);
?>