簡體   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