Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 获得;传输安全性已阻止明文HTTP“;使用HTTPS api调用时出错_Ios_Swift_Swift5_Xcode12 - Fatal编程技术网

Ios 获得;传输安全性已阻止明文HTTP“;使用HTTPS api调用时出错

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

我在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))
        }
    }
}
<代码>导入基础 枚举电影错误:字符串,错误{ 案例响应问题 案例解码问题 案例编码问题 } 结构网络管理器{ 让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)) } } }
您需要检查这些设置

请查看