Swift:
การดาวน์โหลดหน้าเว็บ
วิธีการ:
ลองใช้ URLSession เพื่อทำงานนี้ Swift ทำให้มันตรงไปตรงมา
import Foundation
let url = URL(string: "https://www.example.com")!
let task = URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error {
print("Error:", error)
return
}
if let httpResponse = response as? HTTPURLResponse, (200...299).contains(httpResponse.statusCode) {
if let mimeType = httpResponse.mimeType, mimeType == "text/html",
let data = data, let string = String(data: data, encoding: .utf8) {
print("เนื้อหาเว็บเพจที่ดาวน์โหลดมา:")
print(string)
} else {
print("ประเภท MIME หรือการเข้ารหัสไม่ถูกต้อง.")
}
} else {
print("เซิร์ฟเวอร์ตอบกลับด้วยข้อผิดพลาด.")
}
}
task.resume()
// ตรวจสอบให้แน่ใจว่า playground ทำงานต่อเนื่องจนกว่างานจะเสร็จสิ้น
RunLoop.current.run()ผลลัพธ์ตัวอย่างอาจดูเช่นนี้:
เนื้อหาเว็บเพจที่ดาวน์โหลดมา:
<!doctype html>...ลงลึก
API URLSession ได้รับการเปิดตัวตั้งแต่ iOS 7 และ macOS 10.9 มันเป็นการเปลี่ยนแปลงที่สำคัญในขณะนั้น, ได้แทนที่ NSURLConnection ที่เก่ากว่าและยุ่งยากกว่า ในขณะที่ URLSession ทรงพลังและยืดหยุ่น, คุณอาจพิจารณาไลบรารีของบุคคลที่สามเช่น Alamofire สำหรับความต้องการเครือข่ายที่ซับซ้อนมากขึ้น
เมื่อดำเนินการ, จำไว้ว่าคำขอเครือข่ายเป็นแบบไม่ต้องรอการตอบสนอง ซึ่งหมายความว่าแอปของคุณสามารถดำเนินการอื่น ๆ ได้ในขณะที่เซิร์ฟเวอร์ตอบกลับมาหาคุณ นอกจากนี้, การใช้ URLSession อย่างเหมาะสมประกอบด้วยการจัดการข้อผิดพลาดอย่างมีเมตตาและตรวจสอบสถานะตอบกลับจากเซิร์ฟเวอร์ การตรวจสอบประเภท MIME เป็นสิ่งสำคัญเพื่อให้แน่ใจว่าคุณได้รับ HTML, ไม่ใช่ประเภทไฟล์อื่นๆ เช่น JSON หรือภาพ
ดูเพิ่มเติม
ลงลึกเพิ่มเติมหรือสำรวจทางเลือก:
- เอกสาร
URLSessionของ Apple: URLSession - Swift networking กับ Alamofire: Alamofire
- แพทเทิร์น async/await ของ Swift สำหรับ
URLSessionใน iOS 15+: URLSession async/await