curl を Objective-C に変換
NSURLSession を使用して、curl コマンドを Objective-C コードに変換します。curl2code は WebAssembly を介してブラウザ内で完全に動作するため、データは非公開に保たれます。Swift については、curl to Swift 変換ツールをお試しください。C 言語については、curl to C をご覧ください。以下に、すぐに使える Objective-C の例を掲載しています。
ブラウザから curl をコピーする方法
- 1
デベロッパーツールを開く
F12 キーを押すか、Ctrl+Shift+Iを使用してブラウザのデベロッパーツールを開きます。
- 2
ネットワークタブに移動
ネットワークタブをクリックし、HTTP リクエストをトリガーするアクションを実行します。
- 3
cURL としてコピー
リクエストを右クリック → コピー → cURL としてコピー を選択します。その後、上に貼り付けてください。
よくある質問
NSURLSessionとは何ですか?
NSURLSessionは、Objective-C(およびSwift)におけるHTTPネットワーク用のApple FoundationフレームワークAPIです。データタスク、ダウンロード、アップロード、およびバックグラウンド転送を処理します。iOS 7以降、macOS 10.9以降で利用可能です。サードパーティの依存関係は不要で、AppleプラットフォームでHTTPリクエストを行うための標準的な方法です。curl2codeは、Objective-C向けのNSURLSessionコードを生成します。
NSURLSessionとAFNetworking、どちらを使うべきですか?
NSURLSessionは標準のソリューションであり、ほとんどのニーズに十分で、依存関係もありません。AFNetworkingは歴史的に人気がありましたが、現在はメンテナンスモードです。その後継はAlamofire(Swift)です。新しいObjective-CプロジェクトにはNSURLSessionが推奨されます。Swiftについては、curl to Swift コンバーターを参照してください。
Objective-Cで認証を処理するにはどうすればよいですか?
NSMutableURLRequestにヘッダーを設定します:[request setValue:@"Bearer token" forHTTPHeaderField:@"Authorization"]。Basic認証の場合は、NSDataとbase64EncodedStringWithOptions:を使用して資格情報をエンコードします。curl2codeは、-uおよびBearerフラグを正しいObjective-C構文に変換します。
Objective-Cでマルチパートフォームデータを送信するにはどうすればよいですか?
NSMutableDataを使用してマルチパートのボディを構築します。バウンダリ文字列、フィールドデータ、およびファイルデータを適切なCRLF区切りで追加します。バウンダリを含むContent-Typeを設定します。これは手動の作業ですが、完全な制御が可能です。AFNetworkingはAFHTTPRequestSerializerでこれを簡素化します。
Objective-CでHTTPエラーを処理するにはどうすればよいですか?
NSURLSessionの完了ハンドラーはNSErrorパラメータを提供します。ネットワーク/転送エラーがないか確認してください。レスポンスをNSHTTPURLResponseにキャストし、statusCodeを確認します。認証チャレンジやリダイレクトを含む、よりきめ細かいエラー処理には、NSURLSessionのデリゲートメソッドを使用してください。
NSURLSessionで完了ブロックを操作するにはどうすればよいですか?
NSURLSessionはブロックベースのコールバックを使用します:[session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { ... }]。開始するには必ず[task resume]を呼び出してください。連続したリクエストの場合は、ブロックをネストするか、dispatch_group_notifyを伴うディスパッチグループを使用します。
Objective-Cでタイムアウトを設定するにはどうすればよいですか?
NSURLSessionConfigurationで設定します:config.timeoutIntervalForRequest = 30およびconfig.timeoutIntervalForResource = 300。またはリクエストごとに:request.timeoutInterval = 30。タイムアウトエラーは、errorパラメータにNSURLErrorTimedOutとして届きます。これらはcurlの--max-timeオプションに対応します。
NSURLSessionでプロキシを使用するにはどうすればよいですか?
connectionProxyDictionaryのNSURLSessionConfigurationに、(NSString *)kCFNetworkProxiesHTTPProxyやポートなどのキーを設定します。NSURLSessionは、macOSおよびiOSのシステム全体のプロキシ設定をデフォルトで尊重します。PACファイルの場合は、システム環境設定から構成してください。
Objective-CでJSONボディを含むPOSTリクエストを送信する方法は?
curl2codeを使用して、curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URLのようなcurlのPOSTコマンドをObjective-Cに変換します。生成されたコードでは[request setHTTPBody:[NSJSONSerialization dataWithJSONObject:dict options:0 error:nil]]を使用します。curl2codeはJSONコンテンツを含む-d/--dataフラグを自動的に検出し、NSURLSessionのコードに適切なContent-Typeヘッダーを設定します。
Objective-CでBearerトークン認証を追加する方法は?
curl -H "Authorization: Bearer YOUR_TOKEN" URLをcurl2codeに渡すと、認証ヘッダー[request setValue:@"Bearer TOKEN" forHTTPHeaderField:@"Authorization"]を含むNSURLSessionのコードが生成されます。curl2codeは-H "Authorization: Bearer ..."と--oauth2-bearerフラグの両方からBearerトークンを検出します。Basic authの場合は、-u user:passを使用してください。
Objective-CでContent-Typeヘッダーを設定する方法は?
curl2codeはcurl -H "Content-Type: application/json" URLを、適切なヘッダー[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]を含むNSURLSessionのコードに変換します。-dデータの場合、curlはデフォルトでapplication/x-www-form-urlencodedを使用し、-Fフォームアップロードの場合はmultipart/form-dataを使用します。curl2codeはそれぞれを正しいNSURLSession APIにマッピングします。