Как получить доступ к Api в Swift? - PullRequest
3 голосов
/ 03 июля 2019

Я создал программу на python, где я собираю значение с веб-сайта «ветра». Все работает хорошо, но я хотел попробовать создать то же приложение в Swift, но когда я пытаюсь запустить программу, выдается следующее сообщение: «Несанкционированный доступ к API!»

Но соскоб с python работает хорошо ... может потому, что python использует json? Может ли кто-нибудь помочь мне найти ошибку в моем коде Swift?

Это мой рабочий код Python:

import requests

headers = {'Referer' : 'https://www.windguru.cz/station/219'}    
r = requests.get('https://www.windguru.cz/int/iapi.php?    q=station_data_current&id_station=219&date_format=Y-m-    d%20H%3Ai%3As%20T&_mha=f4d18b6c', headers = headers).json()
print(r)
print(r['wind_max'])

Выходной ветер.

Это мой быстрый код:

import UIKit
import SwiftSoup

class ViewController: UIViewController {

    @IBOutlet weak var label: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()

        let myURLString = "https://www.windguru.cz/int/iapi.php?    q=station_data_current&id_station=219&date_format=Y-m-    d%20H%3Ai%3As%20T&_mha=f4d18b6c"
        guard let myURL = URL(string: myURLString) else { return }

        do {
            let myHTMLString = try String(contentsOf: myURL,     encoding: .utf8)
            let htmlcontent = myHTMLString
            print(myHTMLString)

            do {
                let doc = try SwiftSoup.parse(htmlcontent)
                do {
                    let element = try doc.select("title").first()
                }
            }

        }catch let error {
            print("error: \(error)")
        }

    }

Это дает ошибку доступа к API.

1 Ответ

0 голосов
/ 05 июля 2019

для людей, которые хотят знать ответ:

override func viewDidLoad() {
    super.viewDidLoad()

    let headers: HTTPHeaders = [
        "Referer" : "https://www.windguru.cz/station/219"
    ]

Alamofire.request("https://www.windguru.cz/int/iapi.php?q=station_data_current&id_station=219&date_format=Y-m-d%20H%3Ai%3As%20T&_mha=f4d18b6c", headers: headers).responseJSON { response in
        debugPrint(response)
    }
...