IOS Simple rest API可以在模拟器中工作,但不能在任何设备上工作
此代码在模拟器iPhone8 Plus上按预期运行,但在运行到iPhone8 Plus或iPhone6时,此控制台日志失败,结果很奇怪。Mac和两款运行当前操作系统版本的iPhoneIOS Simple rest API可以在模拟器中工作,但不能在任何设备上工作,ios,swift,rest,Ios,Swift,Rest,此代码在模拟器iPhone8 Plus上按预期运行,但在运行到iPhone8 Plus或iPhone6时,此控制台日志失败,结果很奇怪。Mac和两款运行当前操作系统版本的iPhone import UIKit let DomainURL = "http://museum-dev.williams.edu:3003/id?labID=" class artObject : Codable { var ObjectID : Int? var ObjectName : String
import UIKit
let DomainURL = "http://museum-dev.williams.edu:3003/id?labID="
class artObject : Codable {
var ObjectID : Int?
var ObjectName : String?
var Creators : String?
var Medium : String?
var Titles : String?
var LabelUUID : String?
static func fetch(withID id : String){
let urlString = DomainURL + "\(id)"
print("urlString is \(urlString)")
if let url = URL(string: urlString) {
let task = URLSession.shared.dataTask(with: url, completionHandler: { (data,response,error) in
print(String(data: data!,encoding: .ascii) ?? "no data")
if let newArtObj = try? JSONDecoder().decode(artObject.self, from: data!) {
print(newArtObj.Medium ?? "no url")
}
})
task.resume()
}
}
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
artObject.fetch(withID: "E8EE71C6F5822")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
URL字符串是
2018-09-14 09:47:45.384385-0400 RestFul[330:16235][]tcp_定时器tcp[1]重新传输SYN 3
2018-09-14 09:47:46.389844-0400 RestFul[330:16235][]tcp_定时器tcp[1]重新传输SYN 4
2018-09-14 09:47:47.395361-0400 RestFul[330:16236][]tcp_定时器tcp[1]重新传输SYN 5
2018-09-14 09:47:49.398078-0400 RestFul[330:16234][]tcp_定时器tcp[1]重新传输SYN 6
2018-09-14 09:47:53.403567-0400 RestFul[330:16236][]tcp_定时器tcp[1]重新传输SYN 7
2018-09-14 09:48:00.098736-0400 RestFul[330:16150]状态栏找不到缓存的时间字符串映像。渲染过程中。
2018-09-14 09:48:01.409005-0400 RestFul[330:16234][]tcp_定时器tcp[1]重新传输SYN 8
2018-09-14 09:48:17.412384-0400 RestFul[330:16236][]tcp_定时器tcp[1]重新传输SYN 9
2018-09-14 09:49:00.722310-0400 RestFul[330:16520]TIC TCP连接失败[1:0x1d4168700]:1:50错误(50)
2018-09-14 09:49:00.722701-0400休息[330:16236]任务。已完成,但出现错误-代码:-1001
2018-09-14 09:49:00.724537-0400休息[330:16520]任务。HTTP加载失败(错误代码:-1009[1:50])
尝试在info.plist中设置以下键
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
NSAppTransportSecurity
NSAllowsArbitraryLoads
在生产中,不建议这样做。它将允许您的应用程序调用不安全的url。您需要的是有效的ssl证书。请尝试在info.plist中设置以下密钥
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
NSAppTransportSecurity
NSAllowsArbitraryLoads
在生产中,不建议这样做。它将允许您的应用程序调用不安全的url。您需要的是有效的ssl证书。您是否为http加载设置了传输安全?请将您的设备置于移动数据上并进行检查。我现在已经准备好了,谢谢您的建议。很高兴看到人们多么渴望帮助。我理解允许任意加载的必要性。我的网络错误是因为我在实际设备上测试时忘记在iPhone上启用必要的VPN。您是否为http加载设置了传输安全?将您的设备置于移动数据上并检查。我现在已经准备好了,谢谢您的建议。很高兴看到人们多么渴望帮助。我理解允许任意加载的必要性。我的网络错误是因为我在实际设备上测试时忘记在iPhone上启用必要的VPN。你应该解释他为什么要设置密钥。@ClausJørgensen给我一分钟:)你应该解释他为什么要设置密钥。@ClausJørgensen给我一分钟:)