[英]Getting JSON Response from API Swift
在今天的早些时候,我能够使用此API并在我的iPhone应用程序中获得响应。 事实上,我一直试图调试这么长时间,让我相信我疯了! 附件是我的控制台的截图...
这是我的API调用的代码。 使用Apple的URLSession并遵循许多堆栈溢出问题/教程我无法使用此功能。
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
print("request failed \(error)")
return
}
do {
if let json = try JSONSerialization.jsonObject(with: data) as? [String: String], let result = json["result"] {
// Parse JSON
}
} catch let parseError {
print("parsing error: \(parseError)")
let responseString = String(data: data, encoding: .utf8)
print("raw response: \(responseString)")
}
}
task.resume()
每次我得到这个有趣的[BoringSSL]
错误和我已经完成的搜索没有产生有效的修复我有的任何错误。
就像我说的,今天早些时候我有这个应用程序使用相同的API。 我已经尝试了网站给我的密钥以及他们在网站上使用的测试密钥。 现在我想到了,我将使用我的代码中的确切URL和屏幕截图,并从我在浏览器中获得的响应中截取屏幕截图。 见下文:
通过我的应用中使用的确切网址收到以上回复。
在我的项目中尝试过你的API。 有效。 您可以查看以下差异:
let urlTest = URL(string: "https://www.zipcodeapi.com/rest/wvyR5aWjHNUF80Z6kmr1bTuNojfzhmvtcmfBD8QNo9qbNAHy9FvBISINKF3W5i9J/multi-distance.json/99501/99501,%2085001,%2072201/km")
var request = URLRequest(url: urlTest!)
request.httpMethod = "GET"
let session = URLSession(configuration: .default)
let task : URLSessionDataTask = session.dataTask(with: request) { (data, response, error) in
let statusCode = (response as! HTTPURLResponse).statusCode
if statusCode == 200{
do {
let json = try JSON(data:data!)
}
catch {
print("Could not convert JSON data into a dictionary.")
}
}
}
task.resume()
打印json的描述:▿{“distance”:{“85001”:4093.922,“72201”:4962.6189999999997}}
可能你必须关闭传输层安全性,因为这对我有用。
转到info.plist文件并添加名为App Transport Secrity Settings的属性,并将其Allow Arbitrary loads选项设置为NO
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.