swift - 使用 swift 调用 webAPI
问题描述
我正在使用GeoNames WebServices处理 webAPI 调用,以查找给定城市和周边地区的地震信息。如何进行 webAPI 调用。到目前为止,我已经得到了地址的longitude
和latitude
。我很难理解我们如何获取信息。我想快速显示每个地球的datetime
和magnitude
@IBAction func getAddress(_ sender: Any) {
let addString = location.text
CLGeocoder().geocodeAddressString(addString!, completionHandler:
{(placemarks, error) in
if error != nil {
print("Geocode failed: \(error!.localizedDescription)")
}else if placemarks!.count > 0{
let placemark = placemarks![0]
let location = placemark.location
let coords = location!.coordinate
self.lat = coords.latitude
self.long = coords.longitude
print(self.lat, "\n")
print(self.long, "\n")
}
self.south = self.south + self.lat
self.north = self.north + self.lat
self.east = self.east + self.long
self.west = self.west + self.long
print("\n",self.north, "\n", self.south, "\n", self.east, "\n", self.west)
})
let urlAaString = "http://api.geonames.org/earthquakesJSON?north=" + String(self.north) +
"&south=" + String(self.south) +
"&east=" + String(self.east) +
"&west=" + String(self.west) + "&username=demo"
let url = NSURL(string: urlAaString)!
let urlSession = URLSession.shared
let jsonQuery = urlSession.dataTask(with: url as URL, completionHandler: { data, response, error -> Void in
if (error != nil) {
print(error!.localizedDescription)
}
var err: NSError?
let jsonResult = (try! JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers)) as? NSDictionary
if (err != nil) {
print("JSON Error \(err!.localizedDescription)")
}
print(jsonResult)
})
jsonQuery.resume()
}
解决方案
首先启用 ATS,因为您使用的是 http我如何启用 ATS
你可以使用 alamofire alamofire
就这么简单
Alamofire.request("http://api.geonames.org/earthquakesJSON?north=" + String(self.north) +
"&south=" + String(self.south) +
"&east=" + String(self.east) +
"&west=" + String(self.west) + "&username=demo") .responseJSON { response in
//2.
if let JSON = response.result.value{
//3.
self.jsonArray = JSON as? NSArray
//4.
for item in self.jsonArray! as! [NSDictionary]{
//5.
//you handle the json
}
}
else
{
print("error with the data")
}
}
推荐阅读
- javascript - 当逗号和引号可能在字段中时,从 CSV 转换为 JSON 的最佳方法是什么?
- swift - 无法划分和分配 Int64 值
- javascript - React(打字稿):如何在 const 创建中循环
- python - 如何在页面的内部滚动菜单中滚动?蟒蛇/硒
- c# - 通过迭代将一个类数据映射到另一个类
- python - Pip 安装 Pyarrow Visual Studio 生成器
- node.js - Angular 7.x 对节点快速服务器的查询被转换为字符对象数组
- groovy - String.each 遍历字符?
- json - Pyspark JSON 字符串解析 - 错误:ValueError:'json' 不在列表中 - 没有 Pandas
- javascript - 由 Knockout.js 选项绑定动态创建的选项元素没有 offsetTop 值