تحويل curl إلى Swift
قم بتحويل أوامر curl إلى كود Swift باستخدام URLSession. يعمل curl2code بالكامل في متصفحك عبر WebAssembly — بياناتك تبقى خاصة. لـ Kotlin (Android)، جرب محول curl إلى Kotlin. لـ Objective-C، راجع curl إلى Objective-C. أدناه أمثلة Swift جاهزة للاستخدام.
كيفية نسخ curl من متصفحك
- 1
افتح أدوات المطور (DevTools)
اضغط على F12 أو Ctrl+Shift+I لفتح أدوات مطور المتصفح.
- 2
انتقل إلى علامة تبويب الشبكة (Network)
انقر فوق علامة التبويب Network وقم بالإجراء الذي يؤدي إلى إرسال طلب HTTP.
- 3
نسخ كـ cURL
انقر بزر الماوس الأيمن على الطلب ← Copy ← Copy as cURL. ثم قم بلصقه أعلاه.
الأسئلة الشائعة
ما هي Swift URLSession؟
URLSession هو عميل HTTP المدمج من Apple لأنظمة iOS و macOS و watchOS و tvOS. يتعامل مع مهام البيانات، التنزيلات، الرفع، WebSocket، وعمليات النقل في الخلفية. لا حاجة لتثبيت أي حزمة — فهو جزء من Foundation. يدعم HTTP/2، التخزين المؤقت (caching)، وإدارة ملفات تعريف الارتباط (cookies). يقوم curl2code بتوليد كود URLSession لجميع تحويلات Swift.
URLSession مقابل Alamofire — أيهما يجب أن أستخدم؟
URLSession مدمج ويغطي معظم الاحتياجات — استخدمه لتجنب الاعتمادات الخارجية. Alamofire يضيف سهولة في الاستخدام: بناء طلبات متسلسل، إعادة المحاولة التلقائية، التحقق من الاستجابة، ورفع البيانات متعددة الأجزاء (multipart). للمشاريع الصغيرة، URLSession كافٍ. لنهج مدمج مماثل، راجع محول curl إلى Kotlin أو curl إلى Objective-C.
كيفية التعامل مع المصادقة في Swift؟
قم بتعيين الترويسة (header) على URLRequest: request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization"). للمصادقة الأساسية (Basic auth)، قم بالترميز باستخدام Data("\(user):\(pass)".utf8).base64EncodedString(). يقوم curl2code بتحويل أعلام -u وترويسة Bearer إلى كود Swift تلقائيًا.
كيفية إرسال بيانات النموذج متعدد الأجزاء (multipart form data) في Swift؟
قم ببناء جسم الطلب يدويًا: قم بتوليد سلسلة حدود (boundary string)، وألحق كل حقل/ملف بفاصل CRLF، ثم اضبط Content-Type: multipart/form-data; boundary=.... لسهولة أكبر، استخدم upload(multipartFormData:) من Alamofire. يتعامل curl2code مع تحويل علم -F لـ URLSession.
كيفية التعامل مع أخطاء HTTP في Swift؟
يعيد URLSession كائن Error اختياري في عمليات الإكمال — تحقق مما إذا كان nil. قم بتحويل الاستجابة إلى HTTPURLResponse وتحقق من statusCode. مع async/await (iOS 15+)، استخدم try await URLSession.shared.data(for: request) داخل كتلة do/catch لمعالجة نظيفة للأخطاء.
كيفية استخدام async/await مع URLSession؟
يدعم Swift 5.5+ خاصية async/await بشكل أصلي: let (data, response) = try await URLSession.shared.data(for: request). هذا يستبدل إغلاقات معالج الإكمال (completion handler closures) بكود خطي. استخدم Task { } للاستدعاء من السياقات المتزامنة. للطلبات المتزامنة، استخدم async let أو TaskGroup. لأنماط مماثلة، راجع curl إلى Dart.
كيفية ضبط المهلة (timeouts) في Swift URLSession؟
قم بالتهيئة على URLSessionConfiguration: config.timeoutIntervalForRequest = 30 (لكل طلب) و config.timeoutIntervalForResource = 300 (الإجمالي). أو اضبط request.timeoutInterval = 30 للطلبات الفردية. هذه تقابل خيارات curl --max-time و --connect-timeout.
كيفية استخدام بروكسي مع URLSession؟
اضبط البروكسي في URLSessionConfiguration: config.connectionProxyDictionary = [kCFProxyHostNameKey: "proxy", kCFProxyPortNumberKey: 8080]. لبروكسي SOCKS، استخدم مفاتيح kCFStreamPropertySOCKSProxy. يحترم URLSession أيضًا إعدادات البروكسي على مستوى النظام المهيأة في إعدادات macOS/iOS.
كيف يمكن إرسال طلب POST مع جسم JSON في Swift؟
قم بتحويل أمر curl POST مثل curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL إلى Swift باستخدام curl2code. يستخدم الكود الناتج request.httpBody = try JSONEncoder().encode(data). يقوم curl2code تلقائيًا باكتشاف وسوم -d/--data التي تحتوي على محتوى JSON ويضبط ترويسة Content-Type المناسبة في كود URLSession.
كيف يمكن إضافة مصادقة Bearer token في Swift؟
قم بتمرير curl -H "Authorization: Bearer YOUR_TOKEN" URL إلى curl2code وسيقوم بإنشاء كود URLSession مع ترويسة المصادقة: request.setValue("Bearer YOUR_TOKEN", forHTTPHeaderField: "Authorization"). يكتشف curl2code رموز Bearer من كل من وسوم -H "Authorization: Bearer ..." و --oauth2-bearer. بالنسبة لـ Basic auth، استخدم -u user:pass.
كيف يمكن ضبط ترويسة Content-Type في Swift؟
يقوم curl2code بتحويل curl -H "Content-Type: application/json" URL إلى كود URLSession مع الترويسة المناسبة: request.setValue("application/json", forHTTPHeaderField: "Content-Type"). بالنسبة لبيانات -d، يستخدم curl افتراضيًا application/x-www-form-urlencoded؛ أما بالنسبة لرفع النماذج باستخدام -F، فإنه يستخدم multipart/form-data. يقوم curl2code بربط كل منها بـ API الصحيح في URLSession.