繁体   English   中英

从API Swift获取JSON响应

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM