Objective-C構文のNSURL

11119 ワード

要求アドレスに関する情報を取得する必要がある場合があります.この場合、NSURLのいくつかの方法で操作して取得することができます.
注意すべき点は、要求アドレスに特殊文字や中国語が存在する可能性があることです.情報を正しく取得するために、stringByAddingPercentEscapesUsingEncoding:文字列を符号化し、対応するstringBy ReplacingPercentEscapesUsingEncoding:文字列を復号することをお勧めします.
 
main.m
 1 #import <Foundation/Foundation.h>
 2 
 3 void testURL(NSString *strUrl) {
 4     strUrl = [strUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; // 
 5     
 6     NSURL *url = [NSURL URLWithString:strUrl];
 7     NSMutableString *mStrInfo = [[NSMutableString alloc] initWithString:@"URL :
"]; 8 [mStrInfo appendFormat:@"absoluteString: %@
", [url absoluteString]]; 9 [mStrInfo appendFormat:@"relativeString: %@
", [url relativeString]]; 10 [mStrInfo appendFormat:@"baseURL: %@
", [url baseURL]]; 11 [mStrInfo appendFormat:@"absoluteURL: %@
", [url absoluteURL]]; 12 [mStrInfo appendFormat:@"scheme: %@
", [url scheme]]; 13 [mStrInfo appendFormat:@"resourceSpecifier: %@
", [url resourceSpecifier]]; 14 [mStrInfo appendFormat:@"host: %@
", [url host]]; 15 [mStrInfo appendFormat:@"port: %@
", [url port]]; 16 [mStrInfo appendFormat:@"user: %@
", [url user]]; 17 [mStrInfo appendFormat:@"password: %@
", [url password]]; 18 [mStrInfo appendFormat:@"path: %@
", [url path]]; 19 [mStrInfo appendFormat:@"fragment: %@
", [url fragment]]; // , null, a=1; a=1 query 20 [mStrInfo appendFormat:@"parameterString: %@
", [url parameterString]]; 21 [mStrInfo appendFormat:@"query: %@
", [url query]]; 22 [mStrInfo appendFormat:@"relativePath: %@
", [url relativePath]]; // baseURL nil,relativePath path 23 [mStrInfo appendFormat:@"pathComponents: %@
", [url pathComponents]]; 24 25 NSLog(@"%@", [mStrInfo stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]); // 26 } 27 28 int main(int argc, const char * argv[]) { 29 @autoreleasepool { 30 NSString *strUrl = @"http://www.cnblogs.com:80/huangjianwu/archive/2015/06.html?author=KenmuHuang &page=1#a=1"; 31 testURL(strUrl); 32 } 33 return 0; 34 }

 
結果:
 1 2015-06-19 23:17:29.496 OCNSURL[768:34254] URL :
 2 absoluteString: http://www.cnblogs.com:80/huangjianwu/archive/2015/06.html?author=KenmuHuang &page=1#a=1
 3 relativeString: http://www.cnblogs.com:80/huangjianwu/archive/2015/06.html?author=KenmuHuang &page=1#a=1
 4 baseURL: (null)
 5 absoluteURL: http://www.cnblogs.com:80/huangjianwu/archive/2015/06.html?author=KenmuHuang &page=1#a=1
 6 scheme: http
 7 resourceSpecifier: //www.cnblogs.com:80/huangjianwu/archive/2015/06.html?author=KenmuHuang &page=1#a=1
 8 host: www.cnblogs.com
 9 port: 80
10 user: (null)
11 password: (null)
12 path: /huangjianwu/archive/2015/06.html
13 fragment: (null)
14 parameterString: (null)
15 query: author=KenmuHuang &page=1#a=1
16 relativePath: /huangjianwu/archive/2015/06.html
17 pathComponents: (
18     "/",
19     huangjianwu,
20     archive,
21     2015,
22     "06.html"
23 )