【发布时间】:2015-03-13 17:21:28
【问题描述】:
我应该对 url 进行 http 调用,它会根据我在 url 末尾的内容返回“无效”或“有效”。不过,我不知道该怎么做。我对 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 个空格。您可能想查看一些发布指南。