代码之家  ›  专栏  ›  技术社区  ›  Noodledew

在没有Alamoire的情况下检查响应状态

  •  -1
  • Noodledew  · 技术社区  · 7 年前

    我遵循了一个如何从FireBase获取东西的教程。视频中的人说你应该检查200的响应状态(HTTP OK)。 检查这个有什么好处?有没有没有没有没有没有没有阿拉莫菲尔?

    代码如下:

    guard let url = URL(string: profileImageUrl) else { return }
    
    URLSession.shared.dataTask(with: url) { (data, response, err) in
        if let err = err { print("Failed to fetch the profile image:", err); return }
    
        //check for response status here
    
        guard let data = data else { return }
        let image = UIImage(data: data)
    
        DispatchQueue.main.async {
            self.profileImage.image = image
        }
    
        }.resume()
    }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   kathayatnk    7 年前

    我们使用的大多数API在请求内容时都会返回自己的状态代码集。对于像您的示例这样的简单使用,不使用它就足够了,但是在大型应用程序中,代码具有它们的含义,客户机应该正确地处理它们。您可以从许多资源中了解状态代码的优点。

    您可以从urlsession任务检查状态代码,如下所示:

    guard let url = URL(string: profileImageUrl) else { return }
    
    URLSession.shared.dataTask(with: url) { (data, response, err) in
      if let err = err { print("Failed to fetch the profile image:", err); return }
    
       //check for response status here
       if let httpResponse = response as? HTTPURLResponse {
            print(httpResponse.statusCode)
        }
    
      guard let data = data else { return }
      let image = UIImage(data: data)
    
      DispatchQueue.main.async {
          self.profileImage.image = image
      }
    
      }.resume()
    }
    

    自从 HTTPURLResponse 是的子类 URLResponse 并负责访问有关HTTP加载的信息,您可以轻松地强制转换响应并获取 statusCode