2017-02-24 21 views
0

SailsJSプラットフォームであるSwift 3.0からAPIコールを作成する必要があります。Swiftエスケープ文字「」が文字列に追加される

次の青色の印刷ルートを作成する必要があります。

URL:https://[myapiCall]/[model]?where= { "承認ステータス":{ "ではない": "承認済み"}}

これは次のように私はこのURL文字列を作成しスウィフト、ブラウザ/ポストマン

で完璧に動作します:

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

呼び出されるコードにはエスケープ文字が含まれます。

私は多くの代替方法を試しました。

  1. エスケープ文字がないと、文字列が壊れます。
  2. 最後のURLのエスケープ文字 '\'を空のStringに置き換えようとしましたが、置き換えるために\を「\」として検索する必要があります。コードは\ -_-の代わりに\を探すようになります。
+0

印刷します!) – unkgd

答えて

1

正しくエンコードしていません。ここでスウィフト3遊び場からいくつかの作業コードがあります:URL.addingPercentEncoding(withAllowedCharacters:CharacterSet.urlQueryAllowed)

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!) 
} 

これはGETリクエストを使用する場合は、パーセントエスケープして文字列を試してみて、使用を追加"https://server/model?where=%7B%22approvalStatus%22:%7B%22not%22:%22Approved%22%7D%7D"

関連する問題