تبدیل curl به Objective-C

دستورات curl را با استفاده از NSURLSession به کد Objective-C تبدیل کنید. curl2code کاملاً در مرورگر شما از طریق WebAssembly اجرا می‌شود — داده‌های شما خصوصی می‌مانند. برای Swift، مبدل curl به Swift ما را امتحان کنید. برای C، curl به C را ببینید. در ادامه مثال‌های آماده Objective-C آورده شده است.

نحوه کپی کردن curl از مرورگر

  1. 1

    باز کردن DevTools

    کلید F12 یا Ctrl+Shift+I را فشار دهید تا ابزارهای توسعه‌دهنده مرورگر باز شوند.

  2. 2

    رفتن به تب Network

    روی تب Network کلیک کنید و عملیاتی که باعث ارسال درخواست HTTP می‌شود را انجام دهید.

  3. 3

    کپی به عنوان cURL

    روی درخواست راست‌کلیک کنید ← CopyCopy as cURL. سپس آن را در بالا جایگذاری کنید.

سوالات متداول

NSURLSession چیست؟

NSURLSession رابط API فریم‌ورک Foundation اپل برای شبکه HTTP در Objective-C (و Swift) است. این ابزار وظایف داده، دانلودها، آپلودها و انتقال‌های پس‌زمینه را مدیریت می‌کند. در iOS 7+ و macOS 10.9+ در دسترس است. نیازی به وابستگی شخص ثالث نیست — این روش استاندارد برای ایجاد درخواست‌های HTTP در پلتفرم‌های اپل است. curl2code کد NSURLSession را برای Objective-C تولید می‌کند.

NSURLSession در مقابل AFNetworking — از کدام استفاده کنیم؟

NSURLSession راه حل داخلی است — برای اکثر نیازها کافی است و وابستگی صفر دارد. AFNetworking در گذشته محبوب بود اما اکنون در حالت نگهداری است؛ جانشین آن Alamofire (Swift) است. برای پروژه‌های جدید Objective-C، NSURLSession توصیه می‌شود. برای Swift، مبدل curl به Swift ما را ببینید.

چگونه احراز هویت را در Objective-C مدیریت کنیم؟

هدر را روی NSMutableURLRequest تنظیم کنید: [request setValue:@"Bearer token" forHTTPHeaderField:@"Authorization"]. برای احراز هویت Basic، اعتبارنامه‌ها را با NSData و base64EncodedStringWithOptions: انکود کنید. curl2code پرچم‌های -u و Bearer را به نحو صحیح Objective-C تبدیل می‌کند.

چگونه داده‌های multipart form را در Objective-C ارسال کنیم؟

بدنه multipart را با NSMutableData بسازید: رشته‌های boundary، داده‌های فیلد و داده‌های فایل را با جداکننده‌های CRLF مناسب اضافه کنید. Content-Type را با boundary تنظیم کنید. این کار دستی است اما کنترل کامل می‌دهد. AFNetworking این کار را با AFHTTPRequestSerializer ساده می‌کند.

چگونه خطاهای HTTP را در Objective-C مدیریت کنیم؟

هندلرهای completion در NSURLSession یک پارامتر NSError ارائه می‌دهند — آن را برای خطاهای شبکه/انتقال بررسی کنید. پاسخ را به NSHTTPURLResponse کست کنید و statusCode را بررسی کنید. از متدهای delegate در NSURLSession برای مدیریت خطای دقیق‌تر از جمله چالش‌های احراز هویت و ریدایرکت‌ها استفاده کنید.

چگونه با بلوک‌های completion در 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. خطاهای تایم‌اوت به عنوان NSURLErrorTimedOut در پارامتر خطا می‌رسند. این‌ها با گزینه --max-time در curl مطابقت دارند.

چگونه از یک پروکسی با NSURLSession استفاده کنیم؟

connectionProxyDictionary را در NSURLSessionConfiguration با کلیدهایی مانند (NSString *)kCFNetworkProxiesHTTPProxy و پورت تنظیم کنید. NSURLSession به طور پیش‌فرض از تنظیمات پروکسی سراسری سیستم در macOS و iOS پیروی می‌کند. برای فایل‌های PAC، از طریق تنظیمات سیستم پیکربندی کنید.

چگونه یک درخواست POST با بدنه JSON در Objective-C ارسال کنیم؟

یک دستور curl POST مانند curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL را با استفاده از curl2code به Objective-C تبدیل کنید. کد تولید شده از [request setHTTPBody:[NSJSONSerialization dataWithJSONObject:dict options:0 error:nil]] استفاده می‌کند. curl2code به طور خودکار فلگ‌های -d/--data با محتوای JSON را تشخیص داده و هدر Content-Type مناسب را در کد NSURLSession تنظیم می‌کند.

چگونه احراز هویت با Bearer token را در Objective-C اضافه کنیم؟

دستور curl -H "Authorization: Bearer YOUR_TOKEN" URL را به curl2code بدهید تا کد NSURLSession را با هدر احراز هویت تولید کند: [request setValue:@"Bearer TOKEN" forHTTPHeaderField:@"Authorization"]. curl2code توکن‌های Bearer را از هر دو فلگ -H "Authorization: Bearer ..." و --oauth2-bearer تشخیص می‌دهد. برای Basic auth، از -u user:pass استفاده کنید.

چگونه هدر Content-Type را در Objective-C تنظیم کنیم؟

curl2code دستور curl -H "Content-Type: application/json" URL را به کد NSURLSession با هدر مناسب تبدیل می‌کند: [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]. برای داده‌های -d، دستور curl به طور پیش‌فرض از application/x-www-form-urlencoded استفاده می‌کند؛ برای آپلودهای فرم -F، از multipart/form-data استفاده می‌کند. curl2code هر کدام را به API صحیح NSURLSession نگاشت می‌کند.

لینک‌های مفید

راهنماهای curl

تبدیل curl به زبان‌های دیگر