在swift中使用json发送参数

时间:2018-02-23 12:55:25

标签: ios json swift nsmutableurlrequest urlsession

我正在尝试在我的代码中使用webapi。我的JSON服务有odata过滤。但是当我尝试将链接发送到我的JSON序列化程序时,我在myURL2上得到了“nil”响应。但如果我发送没有参数它工作正常。你有什么建议吗?如何在我的代码中使用ODATA?

        let link = "https://apiservices.domain.com/api/Events?$filter=EventDate gt datetime'2018-02-01' and EventDate lt datetime'2018-02-15'"

        let myURL2 = NSURL(string: link)
        let request2 = NSMutableURLRequest(url: myURL2 as! URL)
        request2.httpMethod = "GET"


        request2.addValue("Bearer "+tokenNewId, forHTTPHeaderField: "Authorization")
        request2.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "content-type")
        request2.setValue("application/json", forHTTPHeaderField: "Accept")

        let task2 = URLSession.shared.dataTask(with: request2 as URLRequest) {(data2, response2, error2) -> Void in
            if let unwrappedData2 = data2 {
                do {
                    guard let records = try? JSONSerialization.jsonObject(with: unwrappedData2, options: .mutableContainers) as? [[String: Any]] else {
                        return
                    }
           }

2 个答案:

答案 0 :(得分:1)

我相信你的问题是你的网址没有经过百分比编码。您需要使用stringByAddingPercentEncodingWithAllowedCharacters:方法来执行此操作。

Here是一个向您展示如何操作的帖子。

答案 1 :(得分:1)

试试这个:

let urlwithPercentEscapes = link.addingPercentEncoding( 
withAllowedCharacters: .urlQueryAllowed)
let myURL2 = NSURL(string: urlwithPercentEscapes!)