Jib*_*ibW 32 urldecode ios swift
我正在使用Swift 1.2开发我的iPhone应用程序,我正在与一个http网络服务进行通信.
我得到的响应是查询字符串格式(键值对)和URL编码.Net
.
我可以得到响应,但查找使用Swift进行解码的正确方法.
样品响应如下
status=1&message=The+transaction+for+GBP+12.50+was+successful
Run Code Online (Sandbox Code Playgroud)
尝试以下方式解码并获取服务器响应
// This provides encoded response String
var responseString = NSString(data: data, encoding: NSUTF8StringEncoding) as! String
var decodedResponse = responseString.stringByReplacingEscapesUsingEncoding(NSUTF8StringEncoding)!
Run Code Online (Sandbox Code Playgroud)
如何替换字符串中的所有URL转义字符?
Vya*_*lav 73
要对URL进行编码和解码,请在项目的某处创建此扩展:
Swift 2.0
extension String
{
func encodeUrl() -> String
{
return self.stringByAddingPercentEncodingWithAllowedCharacters( NSCharacterSet.URLQueryAllowedCharacterSet())
}
func decodeUrl() -> String
{
return self.stringByRemovingPercentEncoding
}
}
Run Code Online (Sandbox Code Playgroud)
Swift 3.0
extension String
{
func encodeUrl() -> String
{
return self.addingPercentEncoding( withAllowedCharacters: NSCharacterSet.urlQueryAllowed())
}
func decodeUrl() -> String
{
return self.removingPercentEncoding
}
}
Run Code Online (Sandbox Code Playgroud)
Swift 4.1
extension String
{
func encodeUrl() -> String?
{
return self.addingPercentEncoding( withAllowedCharacters: NSCharacterSet.urlQueryAllowed)
}
func decodeUrl() -> String?
{
return self.removingPercentEncoding
}
}
Run Code Online (Sandbox Code Playgroud)
您只需要:
print("Decode: ", yourUrlAsString.removingPercentEncoding)
Run Code Online (Sandbox Code Playgroud)
小智 8
Swift 2及更高版本(xCode 7)
var s = "aa bb -[:/?&=;+!@#$()',*]";
let sEncode = s.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
let sDecode = sEncode?.stringByRemovingPercentEncoding
Run Code Online (Sandbox Code Playgroud)
该stringByReplacingEscapesUsingEncoding
方法行为正确。该"+"
字符不是百分比编码的一部分。该服务器使用不当;它应该在此处使用百分比转义空格 ( %20
)。如果对于特定的响应,您想要在其中看到"+"
字符的空间,您只需像您已经在做的那样,通过自己执行替换来解决服务器行为。
归档时间: |
|
查看次数: |
28647 次 |
最近记录: |