一个app, 使用网络请求在现如今, 基本上是必须的了...
在iOS中, 使用HTTP请求, 需要对URL进行一些处理...
有一些特殊字符, 在发送HTTP请求的时候, 需要进行转码, 主要是参数里的特殊字符:
!*'();:@&=+$,/?%#[]
转码
- (NSString *)URLEncode:(NSString *)string {
NSString *encodedString = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)string,NULL,(CFStringRef)@"!*'();:@&=+$,/?%#[]",kCFStringEncodingUTF8));
return encodedString;
}
解码
- (NSString *)URLDecode:(NSString *)string {
NSString *decodedString = (__bridge_transfer NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL, (__bridge CFStringRef)url, CFSTR(""), CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));
return decodedString;
}
一个完整的url
而对于一个完整的url
来说, 可以使用下面的语句来进行转码:
url = [url stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];