Ios 获得;传输安全性已阻止明文HTTP“;使用HTTPS api调用时出错
我在xcode“应用程序传输安全性已阻止明文HTTP(HTTP://)资源加载,因为它不安全。可以通过应用程序的Info.plist文件配置临时异常。” 关键是我在api调用中使用了https。我根本不使用http。但是仍然会出现这个错误 我还在我的info.plist文件中添加了“应用程序传输安全设置:允许任意加载:是” 下面是代码片段:Ios 获得;传输安全性已阻止明文HTTP“;使用HTTPS api调用时出错,ios,swift,swift5,xcode12,Ios,Swift,Swift5,Xcode12,我在xcode“应用程序传输安全性已阻止明文HTTP(HTTP://)资源加载,因为它不安全。可以通过应用程序的Info.plist文件配置临时异常。” 关键是我在api调用中使用了https。我根本不使用http。但是仍然会出现这个错误 我还在我的info.plist文件中添加了“应用程序传输安全设置:允许任意加载:是” 下面是代码片段: import Foundation enum MovieError: String, Error { case responseProblem
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))
}
}
}
<代码>导入基础
枚举电影错误:字符串,错误{
案例响应问题
案例解码问题
案例编码问题
}
结构网络管理器{
让baseURL=”https://ee15abd0abc1.ngrok.io/api"
让url:url
让API_KEY=“”
init(端点:字符串){
let resourceURL=“\(baseURL)/\(端点)”
guard let url=url(字符串:resourceURL)else{fatalError()}
self.url=url
}
func login(ulogin:login,completion:@escaping(Result)->Void){
做{
var urlRequest=urlRequest(url:self.url)
urlRequest.httpMethod=“POST”
urlRequest.addValue(“应用程序/json”,forHTTPHeaderField:“内容类型”)
urlRequest.httpBody=尝试JSONEncoder().encode(登录)
让dataTask=URLSession.shared.dataTask(with:urlRequest){(数据、响应、错误)在
guard让httpResponse=响应为?HTTPURLResponse,httpResponse.statusCode==200,让jsonData=data else{
完成(.failure(.responseProblem))
返回
}
做{
让loginToken=try JSONDecoder().decode(loginToken.self,from:jsonData)
完成(.success(loginToken))
}抓住{
完成(.failure(.decodingProblem))
}
}
dataTask.resume()
}抓住{
完成(.failure(.encodingProblem))
}
}
}
您需要检查这些设置 请查看