Chuyển đổi curl sang C
curl2code chuyển đổi các lệnh curl thành mã C bằng libcurl. Quá trình chuyển đổi chạy trong trình duyệt của bạn thông qua WebAssembly để đảm bảo quyền riêng tư hoàn toàn. Đối với Rust, hãy kiểm tra trình chuyển đổi curl sang Rust của chúng tôi. Đối với Go, hãy xem curl sang Go. Dưới đây là các ví dụ C thực tế với quản lý bộ nhớ thích hợp.
Cách sao chép curl từ trình duyệt của bạn
- 1
Mở DevTools
Nhấn F12 hoặc Ctrl+Shift+I để mở công cụ dành cho nhà phát triển của trình duyệt.
- 2
Đi tới tab Network
Nhấp vào tab Network và thực hiện hành động kích hoạt yêu cầu HTTP.
- 3
Sao chép dưới dạng cURL
Nhấp chuột phải vào yêu cầu → Sao chép → Copy as cURL. Sau đó dán nó vào bên trên.
Câu hỏi thường gặp
libcurl là gì?
libcurl là thư viện C đứng sau công cụ dòng lệnh curl. Đây là thư viện client HTTP khả chuyển và được triển khai rộng rãi nhất hiện nay, hỗ trợ hơn 25 giao thức. Được sử dụng bởi hàng ngàn ứng dụng và hệ thống nhúng. Thêm bằng trình quản lý gói hệ thống của bạn hoặc liên kết tĩnh. curl2code tạo mã C libcurl bằng giao diện easy.
Giao diện libcurl easy so với multi — nên sử dụng cái nào?
Giao diện easy (curl_easy_*) dành cho các lần truyền tải đồng bộ đơn lẻ — đơn giản và trực tiếp. Giao diện multi (curl_multi_*) cho phép truyền tải đồng thời không chặn (non-blocking) trong một luồng duy nhất. Sử dụng easy cho các script và công cụ đơn giản, multi cho các ứng dụng hiệu suất cao. Đối với ngôn ngữ họ C cấp cao hơn, hãy xem curl sang Rust.
Làm thế nào để xử lý xác thực với libcurl?
Đối với Bearer: thiết lập một header tùy chỉnh với curl_slist_append(headers, "Authorization: Bearer token"). Đối với xác thực Basic: curl_easy_setopt(curl, CURLOPT_USERPWD, "user:pass"). libcurl tự động mã hóa thông tin xác thực Basic. curl2code chuyển đổi các cờ -u và header sang các cuộc gọi API C chính xác.
Làm thế nào để gửi dữ liệu form multipart với libcurl?
Sử dụng MIME API (libcurl 7.56+): curl_mime_init() để tạo cấu trúc mime, curl_mime_addpart() cho mỗi trường, curl_mime_name() và curl_mime_filedata() để tải lên tệp. Thiết lập với CURLOPT_MIMEPOST. Giải phóng bằng curl_mime_free().
Làm thế nào để xử lý lỗi với libcurl?
Mỗi hàm curl_easy_* trả về một CURLcode — hãy kiểm tra so với CURLE_OK. Sử dụng curl_easy_strerror(code) để có thông báo dễ đọc. Thiết lập CURLOPT_ERRORBUFFER để có các chuỗi lỗi chi tiết. Lấy trạng thái HTTP bằng curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &code).
Làm thế nào để quản lý bộ nhớ với libcurl?
Luôn gọi curl_easy_cleanup() khi hoàn tất với một handle. Giải phóng danh sách header bằng curl_slist_free_all(). Giải phóng cấu trúc MIME bằng curl_mime_free(). Đối với các write callback, hãy tự quản lý việc cấp phát bộ nhớ đệm của bạn. Gọi curl_global_cleanup() một lần khi thoát chương trình. Việc không giải phóng tài nguyên sẽ gây rò rỉ bộ nhớ.
Làm thế nào để thiết lập timeout với libcurl?
Thiết lập CURLOPT_CONNECTTIMEOUT cho timeout kết nối và CURLOPT_TIMEOUT cho tổng thời gian truyền tải (cả hai tính bằng giây). Để có độ chính xác đến mili giây, hãy sử dụng CURLOPT_CONNECTTIMEOUT_MS và CURLOPT_TIMEOUT_MS. Đây chính là các tùy chọn mà curl CLI sử dụng với --connect-timeout và --max-time.
Làm thế nào để cấu hình một proxy với libcurl?
Thiết lập CURLOPT_PROXY thành URL proxy: curl_easy_setopt(curl, CURLOPT_PROXY, "http://proxy:8080"). Đối với SOCKS5: thiết lập CURLOPT_PROXYTYPE thành CURLPROXY_SOCKS5. Đối với xác thực proxy: CURLOPT_PROXYUSERPWD. libcurl cũng tuân thủ biến môi trường http_proxy.
Làm thế nào để gửi một yêu cầu POST với thân JSON trong C?
Chuyển đổi một lệnh curl POST như curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL sang C bằng cách sử dụng curl2code. Mã được tạo sử dụng curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_string). curl2code tự động phát hiện các cờ -d/--data với nội dung JSON và thiết lập header Content-Type phù hợp trong mã libcurl.
Làm thế nào để thêm xác thực Bearer token trong C?
Cung cấp curl -H "Authorization: Bearer YOUR_TOKEN" URL cho curl2code và nó sẽ tạo mã libcurl với header xác thực: struct curl_slist *headers = curl_slist_append(NULL, "Authorization: Bearer TOKEN"). curl2code phát hiện Bearer tokens từ cả hai cờ -H "Authorization: Bearer ..." và --oauth2-bearer. Đối với Basic auth, hãy sử dụng -u user:pass.
Làm thế nào để thiết lập header Content-Type trong C?
curl2code chuyển đổi curl -H "Content-Type: application/json" URL sang mã libcurl với header chính xác: curl_slist_append(headers, "Content-Type: application/json"). Đối với dữ liệu -d, curl mặc định là application/x-www-form-urlencoded; đối với tải lên biểu mẫu -F, nó sử dụng multipart/form-data. curl2code ánh xạ từng loại tới libcurl API chính xác.