问题描述
我在xcode中遇到此错误:“应用传输安全性由于不安全,阻止了明文HTTP(http://)资源加载。可以通过应用的Info.plist文件配置临时异常。”
关键是我在api调用中使用了https 。我根本不使用http。但是仍然出现此错误。
我还在info.plist文件中添加了“应用程序传输安全设置:允许任意加载:是”。
这是代码段:
import Foundation
enum MovieError: String,Error {
case responseProblem
case decodingProblem
case encodingProblem
}
struct NetworkManager {
let baseURL = "https://ee15abd0abc1.ngrok.io/api"
let url: URL
let API_KEY = ""
init(endPoint: String) {
let resourceURL = "\(baseURL)/\(endPoint)"
guard let url = URL(string: resourceURL) else { fatalError() }
self.url = url
}
func login(_ login: Login,completion: @escaping(Result<LoginToken,MovieError>) -> Void) {
do {
var urlRequest = URLRequest(url: self.url)
urlRequest.httpMethod = "POST"
urlRequest.addValue("application/json",forHTTPHeaderField: "Content-Type")
urlRequest.httpBody = try JSONEncoder().encode(login)
let dataTask = URLSession.shared.dataTask(with: urlRequest) { (data,response,error) in
guard let httpResponse = response as? HTTPURLResponse,httpResponse.statusCode == 200,let jsonData = data else {
completion(.failure(.responseProblem))
return
}
do {
let loginToken = try JSONDecoder().decode(LoginToken.self,from: jsonData)
completion(.success(loginToken))
} catch {
completion(.failure(.decodingProblem))
}
}
dataTask.resume()
} catch {
completion(.failure(.encodingProblem))
}
}
}