C++:
การส่งคำขอ HTTP ด้วยการตรวจสอบสิทธิ์พื้นฐาน
วิธีการ:
นี่คือตัวอย่างพื้นฐานที่ใช้ไลบรารี CURL
ใน C++ ก่อนที่จะเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง libcurl
แล้ว
#include <iostream>
#include <curl/curl.h>
// ฟังก์ชันย้อนกลับง่ายๆ เพื่อจัดการข้อมูลที่ได้รับจาก curl
static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp) {
((std::string*)userp)->append((char*)contents, size * nmemb);
return size * nmemb;
}
int main() {
CURL *curl;
CURLcode res;
std::string readBuffer;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://yourapi.com/data");
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
curl_easy_setopt(curl, CURLOPT_PASSWORD, "pass");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
// ดำเนินการคำขอ และตรวจสอบข้อผิดพลาด
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
} else {
std::cout << readBuffer << std::endl;
}
// การทำความสะอาด
curl_easy_cleanup(curl);
}
return 0;
}
คุณจะเห็นการตอบกลับจากเซิร์ฟเวอร์ถูกพิมพ์ออกที่คอนโซล โดยสมมติว่าไม่มีข้อผิดพลาดใดๆ เกิดขึ้น
พิจารณาลึกซึ้ง
การรับรองความถูกต้องแบบพื้นฐานเป็นวิธีที่เก่าแก่ ย้อนกลับไปในช่วงต้นๆ ของ HTTP ปัจจุบัน ความชอบของอุตสาหกรรมมีแนวโน้มเอนไปทางวิธีการที่ปลอดภัยกว่า เช่น OAuth และโทเค็น แม้ว่าการรับรองความถูกต้องแบบพื้นฐานจะยังคงใช้งานอยู่ บ่อยครั้งสำหรับระบบภายในหรือระบบง่ายๆ ที่ชั้นความปลอดภัยที่หนักหน่วงเป็นเรื่องที่เกินไป
ภายใน ชื่อผู้ใช้และรหัสผ่านของคุณจะถูกเข้ารหัสแบบ base64 และซ่อนอยู่ในส่วนหัว HTTP มันเป็นวิธีง่ายๆ แต่ไม่ปลอดภัยหากไม่ผ่าน HTTPS เพราะ base64 สามารถถอดรหัสได้ง่าย—ทำให้ HTTPS เป็นสิ่งจำเป็น
หาก libcurl
ไม่ตรงกับความชอบของคุณ พิจารณาทางเลือกอื่นเช่นไลบรารี cpp-httplib
หรือคุณสามารถใช้ Boost.Beast
เพื่อการเข้ามือทำมากขึ้น