从API Swift获取JSON响应

时间:2018-02-09 06:29:14

标签: ios json swift response urlsession

今天早些时候,我能够使用此API并在我的iPhone应用程序中获得响应。事实上,我一直试图调试这么长时间,让我相信我疯了!附件是我的控制台的截图......

enter image description here

这是我的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和屏幕截图,并从我在浏览器中获得的响应中截取屏幕截图。见下文:

enter image description here

收到以上回复,并在我的应用中使用了确切的网址。

2 个答案:

答案 0 :(得分:2)

在我的项目中尝试了您的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的打印说明:   ▿{     “距离”:{       “85001”:4093.922,       “72201”:4962.6189999999997     }   }

答案 1 :(得分:1)

可能您必须关闭传输层安全性,因为这对我有用。

  

转到info.plist文件并添加名为应用传输安全设置的属性,并将允许任意加载选项设置为 < / p>

希望这有帮助。