Почему я иногда получаю сообщение об ошибке «Соединение потеряно»? - PullRequest
0 голосов
/ 24 июня 2018

Итак, я создаю приложение и хочу получать данные со своего собственного сервера, используя 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()
        }


    }

1 Ответ

0 голосов
/ 24 июня 2018

Для справки, ваш код ошибки соотносится с:

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)

КомуКроме того, похоже, что вы также не отправляете какие-либо заголовки, поэтому ваш сервер может полностью отклонить запрос.

...