如何在Swift 3中测试URL并获取状态代码?

Dis*_*Neo 10 swift swift3

我正在使用最新版本的Xcode(编写本文时为8.1),它使用的是Swift 3.0.

我要做的就是获取一个字符串,将其转换为URL并测试该URL以查看它是否给出了404错误.我已经能够使用以下命令创建URL和URLRequest:

    let url = URL(string: fullURL)
    let request = URLRequest(url: url!)
Run Code Online (Sandbox Code Playgroud)

但是我发现自己无法获得任何超出此功能的东西.我一直在寻找帮助,但大多数,如果不是全部,都是用Swift 2.0编写的,我试图将其转换为无效.似乎即使您更改命名约定以删除NS前缀,这还不够.我试过用:

    let response: AutoreleasingUnsafeMutablePointer<URLRequest> = nil
Run Code Online (Sandbox Code Playgroud)

但这给了我一个错误,通过在各处粘贴问号和分号,"修复它"会变得更糟.

Apple的文档也没有帮助我.我真的很茫然.

有人知道如何在Swift 3.0中正确设置和测试404状态的URL吗?

Mat*_*eur 20

试试这个给你回复的状态代码 - 200,404等:

let url = URL(string: fullURL)

let task = URLSession.shared.dataTask(with: url!) { _, response, _ in
    if let httpResponse = response as? HTTPURLResponse {
        print(httpResponse.statusCode)
    }
}

task.resume()
Run Code Online (Sandbox Code Playgroud)

你也可以这样做,只需替换你with: url!使用request你在你的例子中定义的var,例如let task = URLSession.shared.dataTask(with: request) {...}但在这个例子中,我认为你不需要真的.


mat*_*att 8

简单的例子:

    let url = // whatever
    let session = URLSession.shared
    let task = session.downloadTask(with:url) { loc, resp, err in
        let status = (resp as! HTTPURLResponse).statusCode
        print("response status: \(status)")
    }
    task.resume()
Run Code Online (Sandbox Code Playgroud)

  • 切勿在未检查该值是否为nil的情况下用力打开(如!)。否则应用程序将崩溃 (3认同)