แปลง curl เป็น Objective-C
แปลงคำสั่ง curl เป็นโค้ด Objective-C โดยใช้ NSURLSession 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 จากนั้นนำมาวางด้านบน
คำถามที่พบบ่อย (FAQ)
NSURLSession คืออะไร?
NSURLSession เป็น API ใน Foundation framework ของ Apple สำหรับการทำเครือข่าย HTTP ใน Objective-C (และ Swift) จัดการได้ทั้ง data tasks, การดาวน์โหลด, การอัปโหลด และการรับส่งข้อมูลเบื้องหลัง ใช้งานได้บน iOS 7+, macOS 10.9+ ไม่จำเป็นต้องใช้ไลบรารีภายนอก เพราะเป็นวิธีมาตรฐานในการทำ HTTP request ในแพลตฟอร์มของ Apple โดย curl2code จะสร้างโค้ด NSURLSession สำหรับ Objective-C
NSURLSession vs AFNetworking — ควรใช้อันไหน?
NSURLSession เป็นโซลูชันที่มีมาให้ในตัว — เพียงพอสำหรับความต้องการส่วนใหญ่และไม่มีการพึ่งพาภายนอก AFNetworking เคยได้รับความนิยมในอดีตแต่ปัจจุบันอยู่ในโหมดบำรุงรักษา (maintenance mode) โดยมีผู้สืบทอดคือ Alamofire (Swift) สำหรับโปรเจกต์ Objective-C ใหม่ แนะนำให้ใช้ NSURLSession สำหรับ Swift ดูได้ที่ ตัวแปลง curl เป็น Swift
จะจัดการการยืนยันตัวตนใน Objective-C ได้อย่างไร?
ตั้งค่า header ใน NSMutableURLRequest: [request setValue:@"Bearer token" forHTTPHeaderField:@"Authorization"] สำหรับ Basic auth ให้เข้ารหัสข้อมูลยืนยันตัวตนด้วย NSData และ base64EncodedStringWithOptions: โดย curl2code จะแปลงแฟล็ก -u และ Bearer เป็นไวยากรณ์ Objective-C ที่ถูกต้อง
จะส่งข้อมูลแบบ multipart form data ใน Objective-C ได้อย่างไร?
สร้าง multipart body ด้วย NSMutableData: เพิ่ม boundary strings, ข้อมูลฟิลด์ และข้อมูลไฟล์พร้อมตัวคั่น CRLF ที่เหมาะสม ตั้งค่า Content-Type พร้อมระบุ boundary วิธีนี้เป็นการทำแบบ manual แต่ให้การควบคุมที่สมบูรณ์ AFNetworking จะช่วยให้เรื่องนี้ง่ายขึ้นด้วย AFHTTPRequestSerializer
จะจัดการข้อผิดพลาด HTTP ใน Objective-C ได้อย่างไร?
completion handler ของ NSURLSession จะให้พารามิเตอร์ NSError — ให้ตรวจสอบเพื่อหาข้อผิดพลาดของเครือข่าย/การขนส่ง cast response เป็น NSHTTPURLResponse และตรวจสอบ statusCode ใช้เมธอด delegate ของ NSURLSession สำหรับการจัดการข้อผิดพลาดที่ละเอียดขึ้น รวมถึง authentication challenges และการ redirect
จะทำงานกับ completion blocks ใน NSURLSession ได้อย่างไร?
NSURLSession ใช้ callback แบบ block: [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { ... }] และต้องเรียก [task resume] เสมอเพื่อเริ่มทำงาน สำหรับ request ที่ทำต่อเนื่องกัน ให้ใช้ block ซ้อนกันหรือใช้ dispatch groups ร่วมกับ dispatch_group_notify
จะตั้งค่า timeout ใน Objective-C ได้อย่างไร?
ตั้งค่าใน NSURLSessionConfiguration: config.timeoutIntervalForRequest = 30 และ config.timeoutIntervalForResource = 300 หรือตั้งค่าราย request: request.timeoutInterval = 30 ข้อผิดพลาด timeout จะมาในรูปแบบ NSURLErrorTimedOut ในพารามิเตอร์ error ซึ่งตรงกับตัวเลือก --max-time ของ curl
จะใช้ proxy กับ NSURLSession ได้อย่างไร?
ตั้งค่า connectionProxyDictionary ใน NSURLSessionConfiguration ด้วยคีย์อย่าง (NSString *)kCFNetworkProxiesHTTPProxy และพอร์ต โดยปกติ NSURLSession จะเคารพการตั้งค่า proxy ทั่วทั้งระบบบน macOS และ iOS สำหรับไฟล์ PAC ให้ตั้งค่าผ่านการตั้งค่าระบบ
วิธีส่งคำขอ POST พร้อม JSON body ใน 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 tokens จากทั้งแฟล็ก -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 จะจับคู่แต่ละรายการเข้ากับ NSURLSession API ที่ถูกต้อง