因此,我正在制作一个应用,并希望使用alamofire从我自己的服务器中获取数据。但我不知道为什么,我有时会收到错误
HTTP加载失败(错误代码:-1005 [1:57])。 错误结束- 代码:-1005。错误:网络连接丢失。
,仅当我尝试将数据获取到自己的服务器时才会发生这种情况。我尝试进行比较以从Darksky API从其他服务器获取数据,但从未收到错误。这是我用来从自己的服务器获取数据和Darksky API的代码。
通常在.....
时发生错误启动应用程序后,按下主屏幕按钮(这样应用程序进入后台状态),当我回到应用程序时,此时通常会出现错误。
所以也许在触发prepareDataBeforeEnterForeground
时出现错误。并非总是发生,而且我不知道为什么它仅发生在我的服务器上,我需要知道如何解决此问题。
错误是来自我的代码还是来自服务器?
import UIKit
import Alamofire
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
getData()
getPrepareDataBeforeEnterForeground() // using notification center
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
getData()
}
func getData() {
// to make request to my own server OR to DarkSky API
let url = URL(string: "https://")
let parameters : [String:String] = ["xxx": "xxxx"]
Alamofire.request(url!, method: .get, parameters: parameters).responseJSON { (response) in
switch response.result {
case .failure(let error):
print("Error: \(error.localizedDescription)")
case .success(let value) :
// parse the data
}
}
}
func getPrepareDataBeforeEnterForeground() {
// to trigger some function after the enter the background state
NotificationCenter.default.addObserver(self, selector: #selector(ViewController.prepareDataBeforeEnterForeground), name: NSNotification.Name.UIApplicationWillEnterForeground, object: nil)
}
@objc func prepareDataBeforeEnterForeground() {
getData()
}
}
答案 0 :(得分:1)
作为参考,您的错误代码与以下内容有关:
kCFURLErrorNetworkConnectionLost = -1005
根据我个人的经验,当我尝试发送到服务器的参数不正确或格式错误时,会出现此错误。
就您而言,我似乎看不到您在哪里接受parameters
或对其进行定义,所以这可能是您的问题。
如果来自服务器,则必须检查服务器软件(Apache,nginx等)的错误日志(如果有)。
以下是有效请求的示例:
let parameters: Parameters = [
"foo": "bar",
"baz": ["a", 1],
"qux": [
"x": 1,
"y": 2,
"z": 3
]
]
Alamofire.request("https://httpbin.org/post", method: .post, parameters: parameters)
要添加,似乎也没有发送任何标头,因此可能导致服务器完全拒绝该请求。