แปลง curl เป็น C
curl2code แปลงคำสั่ง curl เป็นโค้ด C โดยใช้ libcurl การแปลงทำงานในเบราว์เซอร์ของคุณผ่าน WebAssembly เพื่อความเป็นส่วนตัวที่สมบูรณ์ สำหรับ Rust ตรวจสอบ ตัวแปลง curl เป็น Rust ของเรา สำหรับ Go ดูที่ curl เป็น Go ด้านล่างนี้คือตัวอย่าง C ที่ใช้งานได้จริงพร้อมการจัดการหน่วยความจำที่เหมาะสม
วิธีคัดลอก curl จากเบราว์เซอร์ของคุณ
- 1
เปิด DevTools
กด F12 หรือ Ctrl+Shift+I เพื่อเปิดเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ของเบราว์เซอร์
- 2
ไปที่แท็บ Network
คลิกแท็บ Network และดำเนินการที่ทริกเกอร์คำขอ HTTP
- 3
คัดลอกเป็น cURL
คลิกขวาที่คำขอ → Copy → Copy as cURL จากนั้นนำมาวางด้านบน
คำถามที่พบบ่อย (FAQ)
libcurl คืออะไร?
libcurl เป็นไลบรารีภาษา C ที่อยู่เบื้องหลังคำสั่ง curl ใน command-line เป็นไลบรารี HTTP client ที่พอร์ตได้ง่ายและถูกใช้งานแพร่หลายที่สุดในโลก รองรับโปรโตคอลมากกว่า 25 ชนิด ถูกใช้ในแอปพลิเคชันและระบบฝังตัว (embedded systems) นับพันรายการ เพิ่มได้ผ่าน package manager ของระบบหรือลิงก์แบบ static โดย curl2code จะสร้างโค้ด libcurl C โดยใช้อินเทอร์เฟซแบบ easy
libcurl easy vs multi interface — ควรใช้อันไหน?
easy interface (curl_easy_*) สำหรับการรับส่งข้อมูลแบบ synchronous ครั้งเดียว — เรียบง่ายและตรงไปตรงมา multi interface (curl_multi_*) ช่วยให้รับส่งข้อมูลพร้อมกันแบบ non-blocking ใน thread เดียว ใช้ easy สำหรับสคริปต์และเครื่องมือพื้นฐาน และใช้ multi สำหรับแอปพลิเคชันที่ต้องการประสิทธิภาพสูง สำหรับภาษาในตระกูล C ที่ระดับสูงกว่า ดูได้ที่ curl เป็น Rust
จะจัดการการยืนยันตัวตนด้วย libcurl ได้อย่างไร?
สำหรับ Bearer: ตั้งค่า custom header ด้วย curl_slist_append(headers, "Authorization: Bearer token") สำหรับ Basic auth: curl_easy_setopt(curl, CURLOPT_USERPWD, "user:pass") โดย libcurl จะเข้ารหัสข้อมูลยืนยันตัวตน Basic auth ให้โดยอัตโนมัติ curl2code จะแปลงแฟล็ก -u และ header เป็นการเรียก C API ที่ถูกต้อง
จะส่งข้อมูลแบบ multipart form data ด้วย libcurl ได้อย่างไร?
ใช้ MIME API (libcurl 7.56+): curl_mime_init() เพื่อสร้างโครงสร้าง mime, curl_mime_addpart() สำหรับแต่ละฟิลด์, curl_mime_name() และ curl_mime_filedata() สำหรับการอัปโหลดไฟล์ ตั้งค่าด้วย CURLOPT_MIMEPOST และคืนหน่วยความจำด้วย curl_mime_free()
จะจัดการข้อผิดพลาดด้วย libcurl ได้อย่างไร?
ทุกฟังก์ชัน curl_easy_* จะคืนค่า CURLcode — ให้ตรวจสอบเทียบกับ CURLE_OK ใช้ curl_easy_strerror(code) สำหรับข้อความที่มนุษย์อ่านออก ตั้งค่า CURLOPT_ERRORBUFFER สำหรับข้อความข้อผิดพลาดโดยละเอียด และรับสถานะ HTTP ด้วย curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &code)
จะจัดการหน่วยความจำด้วย libcurl ได้อย่างไร?
เรียก curl_easy_cleanup() เสมอเมื่อใช้งาน handle เสร็จสิ้น คืนหน่วยความจำรายการ header ด้วย curl_slist_free_all() คืนหน่วยความจำโครงสร้าง MIME ด้วย curl_mime_free() สำหรับ write callbacks ให้จัดการการจองหน่วยความจำ buffer ของคุณเอง และเรียก curl_global_cleanup() หนึ่งครั้งเมื่อจบโปรแกรม การไม่คืนทรัพยากรจะทำให้เกิดหน่วยความจำรั่วไหล (memory leaks)
จะตั้งค่า timeout ด้วย libcurl ได้อย่างไร?
ตั้งค่า CURLOPT_CONNECTTIMEOUT สำหรับ timeout การเชื่อมต่อ และ CURLOPT_TIMEOUT สำหรับเวลาการรับส่งข้อมูลทั้งหมด (ทั้งคู่เป็นวินาที) สำหรับความละเอียดระดับมิลลิวินาที ให้ใช้ CURLOPT_CONNECTTIMEOUT_MS และ CURLOPT_TIMEOUT_MS ซึ่งเป็นตัวเลือกเดียวกับที่ curl CLI ใช้ผ่าน --connect-timeout และ --max-time
จะตั้งค่า proxy ด้วย libcurl ได้อย่างไร?
ตั้งค่า CURLOPT_PROXY เป็น URL ของ proxy: curl_easy_setopt(curl, CURLOPT_PROXY, "http://proxy:8080") สำหรับ SOCKS5: ตั้งค่า CURLOPT_PROXYTYPE เป็น CURLPROXY_SOCKS5 สำหรับ proxy auth: CURLOPT_PROXYUSERPWD นอกจากนี้ libcurl ยังเคารพตัวแปรสภาพแวดล้อม http_proxy ด้วย
วิธีส่งคำขอ POST พร้อม JSON body ใน C?
แปลงคำสั่ง curl POST เช่น curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL เป็น C โดยใช้ curl2code โค้ดที่สร้างขึ้นจะใช้ curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_string) โดย curl2code จะตรวจจับแฟล็ก -d/--data ที่มีเนื้อหา JSON โดยอัตโนมัติ และตั้งค่าส่วนหัว Content-Type ที่เหมาะสมในโค้ด libcurl
วิธีเพิ่มการยืนยันตัวตนด้วย Bearer token ใน C?
ส่ง curl -H "Authorization: Bearer YOUR_TOKEN" URL ไปยัง curl2code และเครื่องมือจะสร้างโค้ด libcurl พร้อมส่วนหัวการยืนยันตัวตน: struct curl_slist *headers = curl_slist_append(NULL, "Authorization: Bearer TOKEN") โดย curl2code จะตรวจจับ Bearer tokens จากทั้งแฟล็ก -H "Authorization: Bearer ..." และ --oauth2-bearer สำหรับ Basic auth ให้ใช้ -u user:pass
วิธีตั้งค่าส่วนหัว Content-Type ใน C?
curl2code จะแปลง curl -H "Content-Type: application/json" URL เป็นโค้ด libcurl พร้อมส่วนหัวที่ถูกต้อง: curl_slist_append(headers, "Content-Type: application/json") สำหรับข้อมูล -d นั้น curl จะกำหนดค่าเริ่มต้นเป็น application/x-www-form-urlencoded ส่วนการอัปโหลดฟอร์ม -F จะใช้ multipart/form-data โดย curl2code จะจับคู่แต่ละรายการเข้ากับ libcurl API ที่ถูกต้อง