我應該對一個url進行http調用,它將根據我在url結尾處返回的結果返回「Invalid」或「Valid」。但我無法弄清楚如何去做。我對http很新,並不完全確定它是如何工作的。但我走了這麼遠:如何從http請求中快速獲取字符串
func httpcall(urlbit: String) {
var urlor = "http://notrealurl.com/etix.asp?t=scanticket&sid=100000&tid="
urlor += urlbit
let url = NSURL(string: urlor)
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
var feedback = (NSString(data: data, encoding: NSUTF8StringEncoding))
}
task.resume()
if feedback == "invalid" {
return false
} else if feedback == "valid" {
return true
}
}
很顯然,這是行不通的。期待反饋回報任何東西顯然是荒謬的。我只需要弄清楚如何訪問通過調用url獲得的任何數據,更具體地說,我需要獲取該服務器應該發送給我的字符串。
編輯:好的,所以我學到了更多關於NSURL的知識,並且我認爲我有一些幾乎一致的東西。它仍然不起作用,但我相信我正在接近。這裏是我的代碼:
func httpcall2(urlbit: String, onResult: (Bool)-> Void) {
var urlor = "http://notreal.com/etix.asp?t=scanticket&sid=100000&tid="
urlor += urlbit
let url = NSURL(string: urlor)
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
var feedback = (NSString(data: data, encoding: NSUTF8StringEncoding)) as String!
onResult(response=="Invalid")
}
task.resume()
}
這裏就是我用它來調用函數
httpcall2(mystr, { (responseWasInvalid: Bool) in
dispatch_async(dispatch_get_main_queue(), {() -> Void in
if responseWasInvalid == true {
self.messageLabel.text = "valid"
} else if responseWasInvalid == false {
self.messageLabel.text = "invalid"
}
})
})
它似乎仍然沒有真正從調用URL收到任何東西。
要輸入文本作爲代碼,請用4個空格縮進行。有可能需要查看的發佈指南。 – chrissukhram 2015-03-13 17:36:06