curl を C に変換

curl2code は、libcurl を使用して curl コマンドを C コードに変換します。変換は完全なプライバシー保護のため、WebAssembly を介してブラウザ内で実行されます。Rust については、curl to Rust 変換ツールをご確認ください。Go については、curl to Go をご覧ください。以下に、適切なメモリ管理を含んだ実用的な C 言語の例を示します。

ブラウザから curl をコピーする方法

  1. 1

    デベロッパーツールを開く

    F12 キーを押すか、Ctrl+Shift+Iを使用してブラウザのデベロッパーツールを開きます。

  2. 2

    ネットワークタブに移動

    ネットワークタブをクリックし、HTTP リクエストをトリガーするアクションを実行します。

  3. 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_PROXYTYPECURLPROXY_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にマッピングします。

便利なリンク

curl ガイド

curl を他の言語に変換