2016-03-09 158 views
2

我想用GET參數發送URL:NSURL不轉換安全的字符串

let customAllowedSet = NSCharacterSet(charactersInString:"=\"#%/<>[email protected]\\^`{|}&").invertedSet 

guard let safeUrl = "\(GVariables.Url)?id=\(self.UUID)&device_name=\(UIDevice.currentDevice().name)&email=\(email)&first_name=\(firstName)&last_name=\(lastName)".stringByAddingPercentEncodingWithAllowedCharacters(customAllowedSet) else { 
     return 
    } 
    print(safeUrl) 
    guard let url = NSURL(string: safeUrl) else { 
      return 
    } 
    print(url) 

輸出是:

的http:%2F%2Fmyurl.com:8000%2FS%2F%3Fid% 3D15FDA6B3-C51A-4057-8F98-0143981CC5C8%26device_name%3DArtem的 iPhone%26email%3D%26first_name%3D%26last_name%3D

但轉換爲NSURL總是返回nil

+0

這可能意味着你'customAllowedSet'故障。它是如何實現的? – Moritz

+0

對不起,新增'''customAllowedSet''' – Arti

+0

哦,謝謝。有用 – Arti

回答

0

您用來對URL進行編碼的自定義字符集可能看起來很有效,但它不完整。

就你而言,例如,它缺少編碼空格字符「」。

這是更好地使用,而不是已知的方法:

yourStringURL.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLFragmentAllowedCharacterSet()) 
相關問題