curl を C に変換
curl2code は、libcurl を使用して curl コマンドを C コードに変換します。変換は完全なプライバシー保護のため、WebAssembly を介してブラウザ内で実行されます。Rust については、curl to Rust 変換ツールをご確認ください。Go については、curl to Go をご覧ください。以下に、適切なメモリ管理を含んだ実用的な C 言語の例を示します。
ブラウザから curl をコピーする方法
- 1
デベロッパーツールを開く
F12 キーを押すか、Ctrl+Shift+Iを使用してブラウザのデベロッパーツールを開きます。
- 2
ネットワークタブに移動
ネットワークタブをクリックし、HTTP リクエストをトリガーするアクションを実行します。
- 3
cURL としてコピー
リクエストを右クリック → コピー → cURL としてコピー を選択します。その後、上に貼り付けてください。
よくある質問
libcurlとは何ですか?
libcurlは、curlコマンドラインツールの背後にあるCライブラリです。25以上のプロトコルをサポートする、現存する中で最もポータブルで広く導入されているHTTPクライアントライブラリです。何千ものアプリケーションや組み込みシステムで使用されています。システムのパッケージマネージャーで追加するか、静的にリンクしてください。curl2codeは、easyインターフェースを使用したlibcurlのCコードを生成します。
libcurlのeasyインターフェースとmultiインターフェース、どちらを使うべきですか?
easyインターフェース (curl_easy_*) は、単一の同期転送用で、シンプルかつ直感的です。multiインターフェース (curl_multi_*) は、単一スレッドでの非ブロッキング並行転送を可能にします。スクリプトやシンプルなツールにはeasyを、高性能なアプリケーションにはmultiを使用してください。より高レベルなCファミリー言語については、curl to Rustを参照してください。
libcurlで認証を処理するにはどうすればよいですか?
Bearer認証の場合:curl_slist_append(headers, "Authorization: Bearer token")でカスタムヘッダーを設定します。Basic認証の場合:curl_easy_setopt(curl, CURLOPT_USERPWD, "user:pass")を使用します。libcurlはBasic認証の資格情報を自動的にエンコードします。curl2codeは、-uおよびヘッダーフラグを正しいC API呼び出しに変換します。
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()を呼び出してください。ヘッダーリストはcurl_slist_free_all()で、MIME構造体はcurl_mime_free()で解放します。書き込みコールバックについては、独自のバッファ割り当てを管理してください。プログラム終了時に一度curl_global_cleanup()を呼び出します。リソースの解放を怠るとメモリリークの原因になります。
libcurlでタイムアウトを設定するにはどうすればよいですか?
接続タイムアウトにはCURLOPT_CONNECTTIMEOUTを、総転送時間にはCURLOPT_TIMEOUTを設定します(どちらも秒単位)。ミリ秒単位の精度が必要な場合は、CURLOPT_CONNECTTIMEOUT_MSおよびCURLOPT_TIMEOUT_MSを使用します。これらはcurl CLIが--connect-timeoutおよび--max-timeで使用するオプションと全く同じです。
libcurlでプロキシを構成するにはどうすればよいですか?
CURLOPT_PROXYにプロキシURLを設定します:curl_easy_setopt(curl, CURLOPT_PROXY, "http://proxy:8080")。SOCKS5の場合は、CURLOPT_PROXYTYPEをCURLPROXY_SOCKS5に設定します。プロキシ認証にはCURLOPT_PROXYUSERPWDを使用します。libcurlはhttp_proxy環境変数も尊重します。
CでJSONボディを含むPOSTリクエストを送信する方法は?
curl2codeを使用して、curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URLのようなcurlのPOSTコマンドをCに変換します。生成されたコードではcurl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_string)を使用します。curl2codeはJSONコンテンツを含む-d/--dataフラグを自動的に検出し、libcurlのコードに適切なContent-Typeヘッダーを設定します。
CでBearerトークン認証を追加する方法は?
curl -H "Authorization: Bearer YOUR_TOKEN" URLをcurl2codeに渡すと、認証ヘッダーstruct curl_slist *headers = curl_slist_append(NULL, "Authorization: Bearer TOKEN")を含むlibcurlのコードが生成されます。curl2codeは-H "Authorization: Bearer ..."と--oauth2-bearerフラグの両方からBearerトークンを検出します。Basic authの場合は、-u user:passを使用してください。
CでContent-Typeヘッダーを設定する方法は?
curl2codeはcurl -H "Content-Type: application/json" URLを、適切なヘッダーcurl_slist_append(headers, "Content-Type: application/json")を含むlibcurlのコードに変換します。-dデータの場合、curlはデフォルトでapplication/x-www-form-urlencodedを使用し、-Fフォームアップロードの場合はmultipart/form-dataを使用します。curl2codeはそれぞれを正しいlibcurl APIにマッピングします。