我的字符串参数正在分割,因为包含“&”和'='字符。我认为唯一的解决方案是使用stringByReplacingOccurrencesOfString替换这些字符,并在我的服务器中执行相反的操作,但我认为这不是最佳解决方案。
我的代码:
let url : NSString = "http://domain.com/test/service/signInUp?name=\(name)&email=\(email)&facebookID=\(facebookID)&photo=\(photo)"
let urlStr : NSString = url.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!
let searchURL : NSURL = NSURL(string: urlStr as String)!
let request = NSMutableURLRequest(URL: searchURL)
request.HTTPMethod = "POST"
var response: NSURLResponse?
var urlData: NSData?
do {
urlData = try NSURLConnection.sendSynchronousRequest(request, returningResponse: &response)
答案 0 :(得分:0)
当您在查询字符串中包含URL时,您所包含的URL参数中的查询字符串将被视为外部URL的查询字符串的一部分,因此事情变得混乱(技术术语)。
解决方法是在将URL参数放入网址之前对网址参数进行百分比编码,但不能使用stringByAddingPercentEncoding
因为此功能不会对&编码进行编码。导致问题的字符。
您可以使用stringByAddingPercentEncodingWithAllowedCharacters()
let encodedPhone = photo.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.alphanumericCharacterSet());
let url : NSString = "http://domain.com/test/service/signInUp?name=\(name)&email=\(email)&facebookID=\(facebookID)&photo=\(encodedPhoto!)"
如果您的服务器没有自动执行此操作,则可能需要对此参数进行百分比解码