在 swift 中使用 json 发送参数
sending parameters with json in swift
我正在尝试在我的代码中使用 webapi。我的 JSON 服务有 odata 过滤。但是当我尝试将我的 link 发送到我的 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
}
}
我认为您的问题是您的 url 不是 percent-encoded。您需要使用 stringByAddingPercentEncodingWithAllowedCharacters: 方法来做到这一点。
Here 是一个 post 告诉你如何去做。
试试这个:
let urlwithPercentEscapes = link.addingPercentEncoding(
withAllowedCharacters: .urlQueryAllowed)
let myURL2 = NSURL(string: urlwithPercentEscapes!)
我正在尝试在我的代码中使用 webapi。我的 JSON 服务有 odata 过滤。但是当我尝试将我的 link 发送到我的 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
}
}
我认为您的问题是您的 url 不是 percent-encoded。您需要使用 stringByAddingPercentEncodingWithAllowedCharacters: 方法来做到这一点。
Here 是一个 post 告诉你如何去做。
试试这个:
let urlwithPercentEscapes = link.addingPercentEncoding(
withAllowedCharacters: .urlQueryAllowed)
let myURL2 = NSURL(string: urlwithPercentEscapes!)