تحويل curl إلى Objective-C

قم بتحويل أوامر curl إلى كود Objective-C باستخدام NSURLSession. يعمل 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 هي واجهة برمجة تطبيقات إطار عمل Foundation من Apple لشبكات HTTP في Objective-C (و Swift). تتعامل مع مهام البيانات، التنزيلات، الرفع، وعمليات النقل في الخلفية. متوفرة على iOS 7+ و macOS 10.9+. لا حاجة لاعتمادات خارجية — إنها الطريقة القياسية لإجراء طلبات HTTP في منصات Apple. يقوم 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"]. للمصادقة الأساسية، قم بترميز بيانات الاعتماد باستخدام NSData و base64EncodedStringWithOptions:. يقوم curl2code بتحويل أعلام -u و Bearer إلى صيغة Objective-C الصحيحة.

كيفية إرسال بيانات النموذج متعدد الأجزاء في Objective-C؟

قم ببناء جسم الطلب متعدد الأجزاء باستخدام NSMutableData: ألحق سلاسل الحدود، بيانات الحقول، وبيانات الملفات مع فواصل CRLF المناسبة. اضبط Content-Type مع الحدود. هذه العملية يدوية ولكنها تمنح تحكمًا كاملاً. AFNetworking يبسط ذلك باستخدام AFHTTPRequestSerializer.

كيفية التعامل مع أخطاء HTTP في Objective-C؟

توفر معالجات الإكمال في NSURLSession معلمة NSError — تحقق منها بحثًا عن أخطاء الشبكة/النقل. قم بتحويل الاستجابة إلى NSHTTPURLResponse وتحقق من statusCode. استخدم طرق مفوض NSURLSession لمعالجة أخطاء أكثر دقة بما في ذلك تحديات المصادقة وعمليات إعادة التوجيه.

كيفية العمل مع كتل الإكمال (completion blocks) في NSURLSession؟

يستخدم NSURLSession معاودات اتصال تعتمد على الكتل: [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { ... }]. استدعِ دائمًا [task resume] للبدء. للطلبات المتسلسلة، قم بتداخل الكتل أو استخدم مجموعات الإرسال (dispatch groups) مع 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 إلى Objective-C باستخدام curl2code. يستخدم الكود الناتج [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 إلى لغات أخرى