สอบถามการใช้งาน API ของกรมอุตุ

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
chakrit
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 788
ลงทะเบียนเมื่อ: 27/06/2022 9:32 am

สอบถามการใช้งาน API ของกรมอุตุ

โพสต์ที่ยังไม่ได้อ่าน โดย chakrit »

ตอนนี้ได้ทำการสมัครสมาชิกและขอตัว uid และ ukey ได้มาเป็นที่เรียบร้อยแล้วแต่ไม่รู้วิธีการนำ api ไปใช้งานคับ
ลิ้งข้อมูล api : https://data.go.th/dataset/daily-observation
api : https://data.tmd.go.th/api/WeatherToday ... y=api12345
ภาพประจำตัวสมาชิก
eange08
PHP VIP Members
PHP VIP Members
โพสต์: 16184
ลงทะเบียนเมื่อ: 22/12/2020 10:09 am

Re: สอบถามการใช้งาน API ของกรมอุตุ

โพสต์ที่ยังไม่ได้อ่าน โดย eange08 »

ให้เราใช้ ajax และ curl เพื่อเรียกข้อมูลแบบ json จาก API กลับมา ลองดูตามตัวอย่างนี้ค่ะ
viewtopic.php?p=207369#p207369
ภาพประจำตัวสมาชิก
eange08
PHP VIP Members
PHP VIP Members
โพสต์: 16184
ลงทะเบียนเมื่อ: 22/12/2020 10:09 am

Re: สอบถามการใช้งาน API ของกรมอุตุ

โพสต์ที่ยังไม่ได้อ่าน โดย eange08 »

ตอนที่ได้ json ออกมาก็จะต้องแปลงเพื่อมาใช้เป็น array
viewtopic.php?p=207402#p207402
ภาพประจำตัวสมาชิก
chakrit
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 788
ลงทะเบียนเมื่อ: 27/06/2022 9:32 am

Re: สอบถามการใช้งาน API ของกรมอุตุ

โพสต์ที่ยังไม่ได้อ่าน โดย chakrit »

eange08 เขียน: 27/07/2022 10:57 am ให้เราใช้ ajax และ curl เพื่อเรียกข้อมูลแบบ json จาก API กลับมา ลองดูตามตัวอย่างนี้ค่ะ
viewtopic.php?p=207369#p207369
สอบถามเพิ่มเติมคับตัวโค้ดตัวอย่างอย่าง

โค้ด: เลือกทั้งหมด

<?php
$curl = curl_init();
curl_setopt_array($curl, array(
  CURLOPT_URL => "https://data.tmd.go.th/nwpapi/v1/forecast/location/daily/place?province=นนทบุรี&fields=tc_max,rh&date=2021-01-19&duration=2",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "accept: application/json",
    "authorization:Bearer xxxx", //---ตรง xxxx เราต้องลงทะเบียนขอ token มี link อยู่ข้างล่าง
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
?>
ดูแล้วมันมีการใช้ token แต่ api ที่ผมใช้จะใช้ uid และ ukey อันนี้ต้องเปลียนรูปแบบยังไงหรอคับ
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41232
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: สอบถามการใช้งาน API ของกรมอุตุ

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

chakrit เขียน: 26/07/2022 11:38 am ตอนนี้ได้ทำการสมัครสมาชิกและขอตัว uid และ ukey ได้มาเป็นที่เรียบร้อยแล้วแต่ไม่รู้วิธีการนำ api ไปใช้งานคับ
ลิ้งข้อมูล api : https://data.go.th/dataset/daily-observation
api : https://data.tmd.go.th/api/WeatherToday ... y=api12345
จากลิงค์ตัวย่าง

โค้ด: เลือกทั้งหมด

https://data.tmd.go.th/api/WeatherToday/V2/?uid=api&ukey=api12345

โค้ด: เลือกทั้งหมด

uid=api&ukey=api12345
ลองแทนค่า uid ของตัวเอง แทน api
ลองแทนค่า ukey ของตัวเอง แทน api12345
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
chakrit
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 788
ลงทะเบียนเมื่อ: 27/06/2022 9:32 am

Re: สอบถามการใช้งาน API ของกรมอุตุ

โพสต์ที่ยังไม่ได้อ่าน โดย chakrit »

สอบถามหน่อยคับค่าที่ได้ออกมาจากการดึง api เป็น xml
Screenshot 2022-08-01 134036.jpg
Screenshot 2022-08-01 134036.jpg (81.77 KiB) Viewed 1130 times
ผมทำการเพิ่มโค้ด json_decode เข้าไปแต่ไม่ได้รับค่าที่ได้ออกมา

โค้ด: เลือกทั้งหมด

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://data.tmd.go.th/api/WeatherToday/V2/&uid=api&ukey=api12345',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
));

$response = curl_exec($curl);
$err = curl_error($curl);
$obj = json_decode($response);


curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  print_r($obj);
}
ภาพประจำตัวสมาชิก
eange08
PHP VIP Members
PHP VIP Members
โพสต์: 16184
ลงทะเบียนเมื่อ: 22/12/2020 10:09 am

Re: สอบถามการใช้งาน API ของกรมอุตุ

โพสต์ที่ยังไม่ได้อ่าน โดย eange08 »

ลองใส่ส่วนนี้ที่ curl_setopt_array ระบุเรียกเป็น json ได้ไหม

โค้ด: เลือกทั้งหมด

CURLOPT_HTTPHEADER => array(
    "accept: application/json",
  ),
ภาพประจำตัวสมาชิก
eange08
PHP VIP Members
PHP VIP Members
โพสต์: 16184
ลงทะเบียนเมื่อ: 22/12/2020 10:09 am

Re: สอบถามการใช้งาน API ของกรมอุตุ

โพสต์ที่ยังไม่ได้อ่าน โดย eange08 »

ตัวอย่างการเรียกข้อมูล API แบบ php นะคะ
https://data.tmd.go.th/nwpapi/doc/main/ ... start.html#
ภาพประจำตัวสมาชิก
chakrit
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 788
ลงทะเบียนเมื่อ: 27/06/2022 9:32 am

Re: สอบถามการใช้งาน API ของกรมอุตุ

โพสต์ที่ยังไม่ได้อ่าน โดย chakrit »

ค่าที่ได้ออกมาเป็น แบบนี้คับ

โค้ด: เลือกทั้งหมด


<?xml version="1.0"?>
<WeatherToday Version="2.0"><Header><Title>WeatherToday</Title><Description>Today's Weather Observation</Description><Uri>http://data.tmd.go.th/api/WeatherToday/V2/index.php</Uri><LastBuildDate>2022-08-02 16:05:55</LastBuildDate><CopyRight>Thai Meteorological Department:2017</CopyRight><Generator>TMDData_API Services</Generator><status>200 OK</status></Header><Stations><Station><WmoStationNumber>48300</WmoStationNumber><StationNameThai>&#xE41;&#xE21;&#xE48;&#xE2E;&#xE48;&#xE2D;&#xE07;&#xE2A;&#xE2D;&#xE19;</StationNameThai><StationNameEnglish>MAE HONG SON</StationNameEnglish><Province>&#xE41;&#xE21;&#xE48;&#xE2E;&#xE48;&#xE2D;&#xE07;&#xE2A;&#xE2D;&#xE19;</Province><Latitude Unit="decimal degree">19.29897</Latitude><Longitude Unit="decimal degree">97.97578</Longitude><Observation type="ObservationToday"><DateTime>2022-08-02 07:00</DateTime><MeanSeaLevelPressure unit="mb">1004.77</MeanSeaLevelPressure><Temperature Unit="celcius">25.3</Temperature><MaxTemperature Unit="celcius">35.3</MaxTemperature><DifferentFromMaxTemperature Unit="celcius">2.0</DifferentFromMaxTemperature><MinTemperature Unit="celcius">24.9</MinTemperature><DifferentFromMinTemperature Unit="celcius">-0.4</DifferentFromMinTemperature><RelativeHumidity Unit="%">95</RelativeHumidity><WindDirection Unit="degree">000</WindDirection><WindSpeed Unit="km/h">0</WindSpeed><Rainfall Unit="mm">29.10</Rainfall></Observation></Station><Station><WmoStationNumber>48325</WmoStationNumber>
Screenshot 2022-08-02 160940.jpg
Screenshot 2022-08-02 160940.jpg (10.58 KiB) Viewed 1105 times
พอ json_decode ออกมาแล้วค่าที่ได้กลับเป็น NULL
ภาพประจำตัวสมาชิก
chakrit
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 788
ลงทะเบียนเมื่อ: 27/06/2022 9:32 am

Re: สอบถามการใช้งาน API ของกรมอุตุ

โพสต์ที่ยังไม่ได้อ่าน โดย chakrit »

สอบถามคับถ้าต้องการนำตัว MaxTemperature ที่อยู่ใน Value เราสามารถเขียนเรียกได้ยังไงบางคับ
Programming - PHP-1.png
Programming - PHP-1.png (5.03 KiB) Viewed 1039 times
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 106