2017-02-24 94 views
0

我需要從Swift 3.0(SailsJS平臺)進行API調用。將Swift Escape Charater''添加到字符串

我需要製作以下藍色打印路線。

網址:https://[myapiCall]/[model]?where= { 「審覈狀態」:{ 「不」: 「已批准」}}

這與瀏覽器完美的作品/郵差

在斯威夫特我創造了這個URL字符串如下:

var URL:String = "https://<myapiCall>/<model>?where={\"approvalStatus\":{\"not\":\"Approved\"}}" 

被調用的結果代碼包含轉義字符。

我已經嘗試了很多替代方法。

  1. 沒有轉義字符,它打破了字符串。
  2. 嘗試用空字符串替換最終URL中的轉義字符'\',但要替換,我們需要將\作爲「\」。代碼開始尋找\而不是\ -_-
+0

當使用GET請求,嘗試添加使用字符串以百分比轉義:URL.addingPercentEncoding(withAllowedCharacters:CharacterSet.urlQueryAllowed)!) – unkgd

回答

1

您沒有正確編碼它。下面是從斯威夫特3操場一些工作代碼:

if var components = URLComponents(string: "https://server/model") { 
    var query = [ "approvalStatus" : [ "not" : "Approved" ] ] 

    var serialized = try! JSONSerialization.data(withJSONObject: query, options: .init(rawValue: 0)) 
    var jsonStr = String(data: serialized, encoding: .utf8) 
    let queryItem = URLQueryItem(name: "where", value: jsonStr) 
    components.queryItems = [queryItem] 

    print (components.url!) 
} 

這將打印"https://server/model?where=%7B%22approvalStatus%22:%7B%22not%22:%22Approved%22%7D%7D"