在由NSString
生成NSURL
对象时,有可能会出现NSString
中包含百分号各类括号冒号等对于url来说的非法字符如果直接进行转换的话将得到nil。在对于复杂url进行转换前,可以先试试对待转换的NSString发送stringByAddingPercentEscapesUsingEncoding:
将其转换为合法的url字符串(其实目的就是保证非法字符用UTF8编码..) 比如这样:
NSString *fixedStr = [reqStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
可以按照RFC 1808的定义去自己分析;
更便捷的是SDK中各种分析的方法
NSURL *url = [NSURL URLWithString:
@"http://i.cnblogs.com/EditPosts.aspx?opt=1"];
NSLog(@“Scheme: %@”, [url scheme]);
NSLog(@“Host: %@”, [url host]);
NSLog(@“Port: %@”, [url port]);
NSLog(@“Path: %@”, [url path]);
NSLog(@“Relative path: %@”, [url relativePath]);
NSLog(@“Path components as array: %@”, [url pathComponents]);
NSLog(@“Parameter string: %@”, [url parameterString]);
NSLog(@“Query: %@”, [url query]);
NSLog(@“Fragment: %@”, [url fragment]);