Ошибка при получении данных из API с помощью Alamofire - PullRequest
0 голосов
/ 03 мая 2018

Каждый знает, что делать с этой ошибкой при попытке доступа к API из Интернета с помощью Alamofire. Странно то, что я использовал ту же функцию для других API, и они, кажется, прекрасно работают, но не это.

API:

http://minecraftpocket -servers.com / апи /? = Объект сервера и элемент = избирателей и ключ = 833gowl7nz7jyqaqx96dagqzamn431yr9h & месяц = ​​текущий и формат = & JSON предел = 10

Вот ошибка:

Необязательно (Ошибка домена = NSURLErrorDomain Code = -1022 "Ресурс может не загружаться, поскольку политика безопасности транспорта приложений требует использование безопасного соединения. " UserInfo = {NSUnderlyingError = 0x6000004496c0 {Ошибка Domain = kCFErrorDomainCFNetwork Code = -1022 "(null)"}, NSErrorFailingURLStringKey = http://minecraftpocket -servers.com / апи /? = Объект сервера и элемент = избирателей и ключ = 833gowl7nz7jyqaqx96dagqzamn431yr9h & месяц = ​​текущий и формат = & JSON предел = 10 , NSErrorFailingURLKey = http://minecraftpocket -servers.com / апи /? = Объект сервера и элемент = избирателей и ключ = 833gowl7nz7jyqaqx96dagqzamn431yr9h & месяц = ​​текущий и формат = & JSON предел = 10 , NSLocalizedDescription = Ресурс не может быть загружен, потому что Политика безопасности транспорта приложений требует использования безопасного соединение.}) * * тысяча двадцать-одна

Вот функция, которую я пытаюсь вызвать.

func getAPIData(url: String) {
        Alamofire.request(url, method: .get)
            .responseJSON { response in
                if response.result.isSuccess {

                    let dataJSON : JSON = JSON(response.result.value!)

                    self.updateLabels(json: dataJSON)
                    print("Success!")

                } else {
                    print("Error: Could not get data.")
                    print("Error: ", response.error)
                }
        }
    }

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Как говорится, политика безопасности транспорта приложения требует защищенных соединений.

Вы можете включить произвольные загрузки в свой список

Добавьте запись Add App Transport Security Settings в качестве словаря и добавьте запись Bool Allow Arbitrary Loads, для которой установлено значение true.

Однако я рекомендую использовать SSL, если у вас есть контроль над серверной стороной. Использование HTTPS не вызовет эту ошибку.

0 голосов
/ 03 мая 2018

Это происходит потому, что вы используете не защищенный сайт (https), а http.

Добавьте это в ваш info.plist

 <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
        <key>NSExceptionDomains</key>
        <dict>
            <key>example.com</key>
            <dict>
                <key>NSExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSIncludesSubdomains</key>
                <true/>
            </dict>
        </dict>
    </dict>
...