تبدیل curl به Objective-C
دستورات curl را با استفاده از NSURLSession به کد Objective-C تبدیل کنید. curl2code کاملاً در مرورگر شما از طریق WebAssembly اجرا میشود — دادههای شما خصوصی میمانند. برای Swift، مبدل curl به Swift ما را امتحان کنید. برای C، curl به C را ببینید. در ادامه مثالهای آماده Objective-C آورده شده است.
نحوه کپی کردن curl از مرورگر
- 1
باز کردن DevTools
کلید F12 یا Ctrl+Shift+I را فشار دهید تا ابزارهای توسعهدهنده مرورگر باز شوند.
- 2
رفتن به تب Network
روی تب Network کلیک کنید و عملیاتی که باعث ارسال درخواست HTTP میشود را انجام دهید.
- 3
کپی به عنوان cURL
روی درخواست راستکلیک کنید ← Copy ← Copy 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 نگاشت میکند.