字符串参数由于'&'而被分割http帖子请求中的字符

时间:2015-10-04 02:26:38

标签: ios swift httpwebrequest

我的字符串参数正在分割,因为包含“&”和'='字符。我认为唯一的解决方案是使用stringByReplacingOccurrencesOfString替换这些字符,并在我的服务器中执行相反的操作,但我认为这不是最佳解决方案。

我的参数是网址:“https://fbcdn-profile-a.akamaihd.net/hprofile-ak-xft1/v/t1.0-1/p200x200/10407385_1036550749695345_6853981176259794158_n.jpg?oh=ab150587befc541e8e3419b2fa245333&oe=56985B8D&gda=1456547848_432c041c647a7b3fd01f0adb33183aab

我的代码:

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)

1 个答案:

答案 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!)"

如果您的服务器没有自动执行此操作,则可能需要对此参数进行百分比解码