【发布时间】:2020-05-06 10:11:45
【问题描述】:
我正在尝试向 REST API 发出请求 (GET)。此 API 以 JSON 格式返回机场天气报告。
我想要实现的是:用户输入机场的识别码,该识别码被修改为 url。当他/她按下“请求”按钮时,会向 API 发出 GET 请求,然后将结果显示在 UILabel 中。
到目前为止,我已经能够使用按钮进行调用,并且来自服务器的响应正在控制台中打印,但我无法在 UILabel 中打印它。
这是我目前的代码:
//
// ViewController.swift
// urltest
//
// Created by Stefan Oomen on 06/05/2020.
// Copyright © 2020 FlyTechSoft. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var metarResponse: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
}
*/
@IBAction func onButtonClick(_ sender: UIButton) {
let url = URL(string: "hhttps://website.rest/api/metar/location?options=&airport=true&reporting=true&format=json&onfail=cache")!
var request = URLRequest(url: url)
request.addValue("My_API_KEY", forHTTPHeaderField: "Authorization")
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let response = response {
print(response)
if let data = data, let body = String(data: data, encoding: .utf8) {
print(body)
}
} else {
print(error ?? "Unknown error")
}
}
task.resume()
}
}
在 GET URL 中,我只需要更改“位置?”部分,使用来自 'icaoTextField' UITextField 的用户输入:
https://website.rest/api/metar/location?options=&airport=true&reporting=true&format=json&onfail=cache
我对此很陌生,因此非常欢迎所有帮助。 谢谢! PS。小问题:是否可以仅选择和使用 REST API 调用结果的特定部分?
【问题讨论】: