gpt4 book ai didi

ios - 如何检查 rtmp 或 hls url 是否存在,否则它们会在 swift 中给出 404 错误

转载 作者:可可西里 更新时间:2023-11-01 06:22:47 25 4
gpt4 key购买 nike

我需要从 rss 中解析一些数据,并在 swift 2 中打开解析后的 rss 中的相关链接,例如我想检查这个链接是否有效:

rtmp://185.23.131.187:1935/live/jomhori1

或者这个:

http://185.23.131.25/hls-live/livepkgr/_defint_/liveevent/livestream.m3u8

我检查 url 验证的代码:

let urlPath: String = "http://185.23.131.25/hls-live/livepkgr/_defint_/liveevent/livestream.m3u8"
let url: NSURL = NSURL(string: urlPath)!
let request: NSURLRequest = NSURLRequest(URL: url)
let response: AutoreleasingUnsafeMutablePointer<NSURLResponse?>=nil

var valid : Bool!

do {
_ = try NSURLConnection.sendSynchronousRequest(request, returningResponse: response)
} catch {
print("404")
valid = false
}

我在网上搜索过,但我发现的所有方法都对我的问题没有帮助。

最佳答案

@sschale 的回答很好,但 NSURLConnection 已被弃用,现在最好使用 NSURLSession。

这是我的 URL 测试类版本:

class URLTester {

class func verifyURL(urlPath: String, completion: (isOK: Bool)->()) {
if let url = NSURL(string: urlPath) {
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "HEAD"
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { (_, response, error) in
if let httpResponse = response as? NSHTTPURLResponse where error == nil {
completion(isOK: httpResponse.statusCode == 200)
} else {
completion(isOK: false)
}
}
task.resume()
} else {
completion(isOK: false)
}
}

}

然后通过调用带有尾随闭包的类方法来使用它:

URLTester.verifyURL("http://google.com") { (isOK) in
if isOK {
print("This URL is ok")
} else {
print("This URL is NOT ok")
}
}

带有 URLSession 的 Swift 3.0

class URLTester {

class func verifyURL(urlPath: String, completion: @escaping (_ isOK: Bool)->()) {
if let url = URL(string: urlPath) {
var request = URLRequest(url: url)
request.httpMethod = "HEAD"
let task = URLSession.shared.dataTask(with: request, completionHandler: { (data, response, error) in
if let httpResponse = response as? HTTPURLResponse, error == nil {
completion(httpResponse.statusCode == 200)
} else {
completion(false)
}
})
task.resume()
} else {
completion(false)
}
}
}

这比 your answer 好因为它只下载响应 header 而不是整个页面(另外,它更好,因为它是异步的)。

关于ios - 如何检查 rtmp 或 hls url 是否存在,否则它们会在 swift 中给出 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35706958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com