Objective-C 语法之 NSURL

有时我们需要获取请求地址的相关信息,这时我们就可以用 NSURL 的一些方法操作来获取它。

需要注意的一点是:请求地址里可能存在特殊字符或中文,为了正确获取信息,建议使用 stringByAddingPercentEscapesUsingEncoding: 对字符串进行编码,然后对应的使用 stringByReplacingPercentEscapesUsingEncoding: 对字符串进行解码。

 

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相关信息如下:\n"];
 8     [mStrInfo appendFormat:@"absoluteString: %@\n", [url absoluteString]];
 9     [mStrInfo appendFormat:@"relativeString: %@\n", [url relativeString]];
10     [mStrInfo appendFormat:@"baseURL: %@\n", [url baseURL]];
11     [mStrInfo appendFormat:@"absoluteURL: %@\n", [url absoluteURL]];
12     [mStrInfo appendFormat:@"scheme: %@\n", [url scheme]];
13     [mStrInfo appendFormat:@"resourceSpecifier: %@\n", [url resourceSpecifier]];
14     [mStrInfo appendFormat:@"host: %@\n", [url host]];
15     [mStrInfo appendFormat:@"port: %@\n", [url port]];
16     [mStrInfo appendFormat:@"user: %@\n", [url user]];
17     [mStrInfo appendFormat:@"password: %@\n", [url password]];
18     [mStrInfo appendFormat:@"path: %@\n", [url path]];
19     [mStrInfo appendFormat:@"fragment: %@\n", [url fragment]]; //编码后的字符串,获取到的值为null,而不是正常情况的a=1;最终a=1被作为query的值内容了
20     [mStrInfo appendFormat:@"parameterString: %@\n", [url parameterString]];
21     [mStrInfo appendFormat:@"query: %@\n", [url query]];
22     [mStrInfo appendFormat:@"relativePath: %@\n", [url relativePath]]; //如果baseURL是nil,relativePath就跟path一样
23     [mStrInfo appendFormat:@"pathComponents: %@\n", [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 )
时间: 2024-10-20 05:27:01

Objective-C 语法之 NSURL的相关文章

初学Objective - C语法之代码块(block)

一.block声明 1.无参数,无返回值: void (^sayHi)(); 2.有参数,有返回值: NSInteger (^operateOfValue)(NSInteger num); block的声明:返回值类型(^block变量名)(参数列表) 脱字符(^)是块的语法标记 二.block实现 block变量名 = ^返回值类型(参数列表) 1.  sayHi = ^{ NSLog(@"你好"); }; 2. operateOfValue = ^ NSInteger (NSInt

《黑马程序员》 NSArray和NSMutableArray的使用(Objective - c语法)

------- <a href="http://www.itheima.com" target="blank">Windows Phone 7手机开发</a>.<a href="http://www.itheima.com" target="blank">.Net培训</a>.期待与您交流! ------- 1 NSArray 的使用方法 • Foundation中数组(NSAr

iOS开发——语法篇OC篇&amp;高级语法精讲二

Objective高级语法精讲二 Objective-C是基于C语言加入了面向对象特性和消息转发机制的动态语言,这意味着它不仅需要一个编译器,还需要Runtime系统来动态创建类和对象,进行消息发送和转发.下面通过分析Apple开源的Runtime代码(我使用的版本是objc4-646.tar)来深入理解Objective-C的Runtime机制. Runtime数据结构 在Objective-C中,使用[receiver message]语法并不会马上执行receiver对象的message方

iOS 版本更新摘要(三)iOS 8.x

[What's New in iOS 8.x](https://developer.apple.com/library/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS8.html#//apple_ref/doc/uid/TP40014205-SW1 "What's New in iOS 8.x") ####iOS 8.0 #App Extensions iOS 8.0 提供了 app 扩展点,让你可以在系统的选择区域扩展选择区域.

【转】iOS开发常用的第三方类库

原文: http://blog.csdn.net/xiazailushang/article/details/9716043 在iOS开发中不可避免的会用到一些第三方类库,它们提供了很多实用的功能,使我们的开发变得更有效率:同时,也可以从它们的源代码中学习到很多有用的东西. Reachability 检测网络连接 用来检查网络连接是否可用:包括WIFI和WWAN(3G/EDGE/CDMA等)两种工作模式. 可以从Apple网站下载到:http://developer.apple.com/libr

ios常用到的第三方库

在iOS开发中不可避免的会用到一些第三方类库,它们提供了很多实用的功能,使我们的开发变得更有效率:同时,也可以从它们的源代码中学习到很多有用的东西. Reachability 检测网络连接 用来检查网络连接是否可用:包括WIFI和WWAN(3G/EDGE/CDMA等)两种工作模式. 可以从Apple网站下载到:http://developer.apple.com/library/ios/#samplecode/Reachability/History/History.html#//apple_r

Pentaho BI server 中 CCC table Component 的使用小技巧

我使用的版本 Pentaho BI Server 5.3.0.0.213 CDE/CDF/CDA/CCC 15.04.16 stable Q: 如何设置表格中各种提示文字的语言(默认为英语)? CDE -> table Component -> Advanced Properties -> oLanguage,编辑该属性,语法需满足 JavaScript Objective 的语法,可以设置的参数如下: { "sProcessing": "Processin

iOS开发之常用第三方框架(下载地址,使用方法,总结)

iOS开发之常用第三方框架(下载地址,使用方法,总结) 说句实话,自学了这么久iOS,如果说我不知道的但是又基本上都摸遍了iOS相关知识,但是每次做项目的时候,遇到难一点的地方或者没试过的东西就闷了. 比如这次,打算做一个着手做一个iOS的项目,是一个关于日计划的小软件,界面都其他的都算满意,网络就不说了,没有服务器,所以很多数据相关的功能不无法实现. 但是嘴头疼的事情就是,比如遇到一个功能的时候,其实如果说要实现的话还是可以的,但是每次在我实现之后我总会想到,这么实现更好,这么实现更简单,更加

IOS第三方框架集合-02

IOS第三方框架集合 Reachability 检测网络连接 用来检查网络连接是否可用:包括WIFI和WWAN(3G/EDGE/CDMA等)两种工作模式. 现在有更好的替代品:https://github.com/tonymillion/Reachability,比Apple提供的兼容性更好,而且更加好用,更具体的使用方法请看它提供的例子. Reachability reach = [Reachability reachabilityWithHostname:@"www.google.com&q