HTTP-คำถาม

เพื่อให้ได้ตัวอย่างนี้ เราจะอธิบายพื้นฐานของ HTTP ก่อน ทั้งนี้เป็นสิ่งสำคัญในการเข้าใจวิธีทำงานของอินเตอร์เฟซ

พื้นฐาน

จุดต่อไปนี้ควรจะต้องระวัง:

  • เมื่อมี Request ผ่าน HTTP จะมีการสร้างการเชื่อมต่อจากไคลเอนต์จนกว่าการเชื่อมต่อจะถูกตัดโดยเซิร์ฟเวอร์
  • การค้นหาเกิดขึ้นผ่าน TCP ผ่านพอร์ต 80 (HTTP ไม่เข้ารหัส) และผ่านพอร์ต 443 (HTTPS เข้ารหัส)
  • ถ้าใช้พอร์ต 80 ด้วย http:// หรือพอร์ต 443 ด้วย https:// พอร์ตจะถูกซ่อนไว้
  • ชั้นการเชื่อมต่อตั้งแต่ HTTP/1.1 เป็นต้นไป ทำให้การเชื่อมต่อสามารถเปิดไว้ได้เป็นระยะเวลาหนึ่ง เพื่อหลีกเลี่ยงการ Handshake ของ TCP นี่ไม่ปรากฏในโหมดของ Antcas แต่หลังจาก Timeout การเชื่อมต่อจะถูกปิดโดยไคลเอนต์ หรือเซิร์ฟเวอร์ Antcas ดังนั้น Timeout ควรจะตั้งค่าสูง
  • การค้นหาแต่ละครั้งเป็นไปได้ทั้งหมดในการย้อนหลัง สิ่งสำคัญคือเซิร์ฟเวอร์ที่ใช้ HTTP/1.0, HTTP/1.1 หรือ HTTP/2 ไม่มีความแตกต่าง
  • Header เป็น Case-Insensitive นี่หมายถึงตัวอักษรใหญ่และเล็กไม่สำคัญ แต่บางผู้ผลิตไม่ได้ดูแลการใช้งานอย่างถูกต้อง
  • การเข้ารหัสตัวอักษรใน Antcas Control เป็น UTF-8 ถ้ามีการใช้อื่นๆ จะต้องแปลงให้เป็น UTF-8
  • ความยาวสูงสุดของ URL รวม Query คือ 2,083 ตัวอักษร

การสร้าง URL ดังนี้:

http://server.tld/getdata?project=you%26i+project&id=25#anker
ส่วนประกอบ ความหมาย
http:// กำหนดโปรโทคอล Antcas Control สนับสนุน http และ https ในปัจจุบัน
server.tld กำหนดโดเมน (DNS) หรือที่อยู่ IP ของเซิร์ฟเวอร์ปลายทาง
getdata เป็น URI ของเซิร์ฟเวอร์ นี่คือหน้าปลายทาง ซึ่งคล้ายกับเส้นทาง
?[...] สัญลักษณ์ ? แยก URL จาก GET-Request ที่อยู่ด้านหลังเป็นข้อมูลฟอร์ม หรือ Query นี่จะถูกเข้ารหัสเพื่อแทนตัวอักษรที่ไม่ได้รับการสนับสนุน
#[...] สัญลักษณ์ #- กำหนด Anchor ในหน้าเว็บ นี่จะทำให้สามารถกระโดดไปยังตำแหน่งใดๆ ได้ (scroll) ข้อมูลนี้ไม่ถูกส่งไปยังเซิร์ฟเวอร์ นอกจากนี้ส่วนนี้รวมทั้ง # ไม่ควรจะถูกคัดลอกไปใช้ในการค้นหา เพราะจะทำให้เรียกใช้หน้าปลายทางอื่นๆ ในเซิร์ฟเวอร์

การตั้งค่าของเซิร์ฟเวอร์ปลายทางจะถูกทำใน HTTP-Gateway ที่เหมาะสม

การสร้างคำถาม

การสร้างคำถามประกอบด้วย Header และ Body Header แสดงวิธีที่ใช้ URI และโปรโทคอลในบรรทัดแรก

GET /getdata?project=you%26i+project&id=25 HTTP/1.1
Host: server.tld

ต่อจากนั้นจะเป็นการตอบกลับของเซิร์ฟเวอร์ ซึ่งประกอบด้วยสถานะโค้ดของการค้นหา Body จะอยู่หลัง Header โดยมีบรรทัดว่าง

HTTP/1.1 200 OK
Server: Apache2
Content-Type: text/html

<html>Hallo Welt</html>

สถานะโค้ด

สถานะโค้ดถูกแบ่งเป็นกลุ่ม โดยตัวเลขแรกจะกำหนดกลุ่ม นอกจากนี้หลังจากตัวเลขจะมีความหมายในภาษาไทย ตัวอย่างเช่น:

สถานะ คำอธิบาย
200 OK การร้องขอสำเร็จ
301 Found การเปลี่ยนเส้นทางไปยังหน้าหลัก Antcas Control จะติดตามลิงก์ดังนั้นการตอบกลับนี้จะถูกซ่อนไว้โดยทั่วไป
404 Not Found หน้าที่ระบุไม่พบ
500 Internal Server Error เกิดข้อผิดพลาดของเซิร์ฟเวอร์

วิธีการ

วิธี GET และ POST ถูกใช้งานบ่อยที่สุด

วิธีการ คำอธิบาย
GET การค้นหาแบบ GET เป็นการค้นหาตามมาตรฐาน นี่ไม่สนับสนุน Content
POST การค้นหาแบบ POST ส่ง Content ไปยังเซิร์ฟเวอร์ Content อาจจะว่างเปล่าได้ Content มีความได้เปรียบที่นี่ไม่มีขีดจำกัดความยาว เมื่อมีการส่ง GET-Request จะสามารถส่งข้อมูลได้จำนวนจำกัดเท่านั้น
PUT PUT ถูกใช้งานโดยอินเตอร์เฟซเพื่อแลกเปลี่ยนข้อมูล
DELETE ร่วมกับ PUT นี่ถูกใช้งานเพื่อลบข้อมูล
(อื่นๆ) HTTP Method อื่นๆ ก็ได้รับการสนับสนุน แต่จะต้องมีการตั้งค่าที่เหมาะสม

การยืนยันตัวตน

ส่วนใหญ่ของการยืนยันตัวตนเกิดขึ้นใน Header แต่ก็มีการร้องขอที่ถูกกำหนดใน Query หรือ Content

อาจจะต้องสร้าง Session ก่อนการค้นหาโดยจริง การตั้งค่า Session จะเป็น Header Set-Cookie นี่ Cookie ต้องถูกส่งกลับไปอีกครั้ง ความหมายของ Cookie เป็น Case-Sensitive นี่หมายถึงความหมายต้องถูกส่งกลับไปอย่างละเอียด ตัวอย่างที่ถูกย่อย:

POST /login HTTP/1.1
Host: server.tld

username=myname&password=1234

การตอบกลับของเซิร์ฟเวอร์:

HTTP/1.1 200 OK
Server: Apache2
Content-Type: text/html
Set-Cookie: SESSION=vmvbquk7dq6dbbcq

ตอนนี้ Cookie สามารถถูกใช้งานในการค้นหาต่อไปได้:

GET /opendoor HTTP/1.1
Host: server.tld
Cookie: SESSION=vmvbquk7dq6dbbcq

เทคนิค

ในคอนโซลของนักพัฒนาในเบราว์เซอร์ คุณสามารถตรวจสอบและทดสอบการร้องขอได้ภายใต้ Network นอกจากนี้บางครั้งก็ควรจะคัดลอกหรือดู Header

การตั้งค่า

ใน Antcas Control จะมีการสร้าง HTTP Interface ด้วย Gateway Gateway ถูกตั้งค่าอย่างเป็น HTTP-Client ที่นี่จะมีการกรอกที่อยู่ปลายทางและพอร์ต (จำเป็น) ตามลำดับ หลังจากนั้นในโครงสร้างจะมีการตั้งค่า Query โดยการกรอก URL เป็นตัวแปรภายใต้ Communication

การค้นหาแบบง่าย

เพื่อให้ได้การค้นหาแบบง่าย คุณสามารถเลือกประเภทข้อมูลใดๆ ได้ นี่ควรจะเป็นสตริง (string) เมื่อมีการเปลี่ยนแปลงค่าที่ออกไป การค้นหาจะถูกทำงานโดยตรง ค่านี้จะถูกใช้งานเป็น Query

การค้นหาแบบซับซ้อน

การค้นหาแบบซับซ้อนจะถูกสร้างด้วย Function Block HTTP_REQUEST ต้องตั้งค่า Datatype ของ Communication เป็น raw การตอบกลับสามารถตรวจสอบได้โดยใช้ Function Block HTTP_RESPONSE ID ของการค้นหาต้องเชื่อมต่ออย่างแน่นอนเพื่อให้การตอบกลับของการร้องขอถูกต้อง

ตัวอย่าง

ในตัวอย่างนี้ ข้อมูลจะถูกส่งไปยังเซิร์ฟเวอร์ด้วยวิธี GET และมีการตรวจสอบการตอบกลับ URL ที่สมบูรณ์ดังนี้:

http://server.tld/getdata?project=you%26i+project&id=25

เพื่อให้สามารถรับหรือส่งข้อมูลจากเซิร์ฟเวอร์ได้ ตัวอย่างต่อไปนี้จะถูกใช้งาน:

หมายเหตุ: ตัวอย่างนี้ไม่แสดงถึงวิธีการที่จะทำให้ Request ถูกทำงาน การทำงานนี้จะเกิดขึ้นเมื่อมีขอบเขตบวกที่ Input SET เพื่อป้องกันการค้นหาที่ไม่ได้ตั้งใจ ควรจะตั้งค่า Input DIS เป็น TRUE

การตั้งค่าของอินเตอร์เฟซดังนี้: