iOS中的URL解码
问题描述:
我正在使用Swift 1.2来开发我的iPhone应用程序,并且正在与http网络服务进行通信。
I am using Swift 1.2 to develop my iPhone application and I am communicating with a http web service.
我得到的响应是查询字符串格式(密钥) -value对)和以 .Net
编码的URL。
The response I am getting is in query string format (key-value pairs) and URL encoded in .Net
.
我可以得到响应,但是看看使用Swift解码的正确方法。
I can get the response, but looking the proper way to decode using Swift.
示例响应为关注
status=1&message=The+transaction+for+GBP+12.50+was+successful
尝试以下方式解码并获得服务器响应
Tried following way to decode and get the server response
// This provides encoded response String
var responseString = NSString(data: data, encoding: NSUTF8StringEncoding) as! String
var decodedResponse = responseString.stringByReplacingEscapesUsingEncoding(NSUTF8StringEncoding)!
如何替换字符串中的所有网址转义字符?
How can I replace all URL escaped characters in the string?
答
要编码和解码网址,请在项目的某处创建此扩展:
To encode and decode urls create this extention somewhere in the project:
Swift 2.0
extension String
{
func encodeUrl() -> String
{
return self.stringByAddingPercentEncodingWithAllowedCharacters( NSCharacterSet.URLQueryAllowedCharacterSet())
}
func decodeUrl() -> String
{
return self.stringByRemovingPercentEncoding
}
}
Swift 3.0
extension String
{
func encodeUrl() -> String
{
return self.addingPercentEncoding( withAllowedCharacters: NSCharacterSet.urlQueryAllowed())
}
func decodeUrl() -> String
{
return self.removingPercentEncoding
}
}
Swift 4.1
extension String
{
func encodeUrl() -> String?
{
return self.addingPercentEncoding( withAllowedCharacters: NSCharacterSet.urlQueryAllowed)
}
func decodeUrl() -> String?
{
return self.removingPercentEncoding
}
}