gpt4 book ai didi

ios - 为什么有时会出现 'The connection was lost' 错误?

转载 作者:搜寻专家 更新时间:2023-10-31 22:54:42 25 4
gpt4 key购买 nike

因此,我正在制作一个应用程序并希望使用 alamofire 从我自己的服务器获取数据。但我不知道为什么,我有时会收到错误

HTTP load failed (error code: -1005 [1:57]) . finished with error - code: -1005. error: The network connection was lost.

只有当我尝试将数据发送到我自己的服务器时才会发生这种情况。我尝试比较从其他服务器、从 darksky API 获取数据,但我从未收到错误。这是我用来从我自己的服务器和 darksky API 获取数据的代码。

错误通常发生在......

在我启动应用程序后,按下主页按钮(因此应用程序进入后台状态),当我返回应用程序时,通常会在此时出现错误。

所以也许我在 prepareDataBeforeEnterForeground 被触发时遇到了错误。并非总是发生,我不知道为什么它只发生在我的服务器上,我需要知道如何解决这个问题。

错误是来 self 的代码还是来自服务器?

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()
}


}

最佳答案

作为引用,您的错误代码与:

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)

此外,您似乎也没有发送任何 header ,因此您可能导致服务器完全拒绝请求。

关于ios - 为什么有时会出现 'The connection was lost' 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51006368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com