0
我寫了一些代碼,然後返回登錄到用戶輸入憑據的網站,然後導航到某個頁面以解析信息(使用NSURLConnectionDelegate
)。Swift/iOS8順序HTTP請求
func startConnection() {
var url = NSURL(string:"https://www.website.com/psp/ps/?cmd=login&languageCd=ENG")
var request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "POST"
let data = (dataString as NSString).dataUsingEncoding(NSUTF8StringEncoding)
request.HTTPBody = data
request.setValue("\(data!.length)", forHTTPHeaderField: "Content-Length")
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.setValue("text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", forHTTPHeaderField: "Accept")
connection1 = NSURLConnection(request: request, delegate: self, startImmediately: false)!
connection1.start()
}
func connectionDidFinishLoading(connection: NSURLConnection) {
if (connection == connection1) {
let url = NSURL(string: "https://www.nexturl.com")
var request = NSMutableURLRequest(URL: url!)
connection2 = NSURLConnection(request: request, delegate: self, startImmediately: false)!
connection2.start()
}
if (connection == connection2) {
let url = NSURL(string: "https://www.nexturl.com")
var request = NSMutableURLRequest(URL: url!)
connection3 = NSURLConnection(request: request, delegate: self, startImmediately: false)!
connection3.start()
}
if (connection == connection3) {
let strData: NSString = NSString(data: responseData, encoding: NSUTF8StringEncoding)!
parse(strData)
}
}
總的想法是斷火的初始請求,然後從委託方法connectionDidFinishLoading
發送關閉其他請求。有沒有更清潔/更好的方式來進行這種順序呼叫?
使用框架如AFNetworking從應用程序邏輯分離的HTTP請求的邏輯,給你一個簡單的塊回調請求結束時。然後,您可以通過在嵌套完成塊中發出新請求來鏈接請求。 –
是的@David說,最好的方法是使用基於閉包的HTTP框架。因爲在快速,功能封閉鏈將是非常乾淨。 在這種情況下,代表明確不是解決方案。 你爲什麼要連續呼叫? 您需要重複使用來自第一次請求的數據? 如果不是,你可以只做平行請求? – LastMove
以及我真正需要的是驗證登錄。我正在研究alamofire,新的聯網。謝謝你的迴應。 – chris