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

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

 

main.m

 #import <Foundation/Foundation.h>

 void testURL(NSString *strUrl) {
strUrl = [strUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; //对字符串进行编码 NSURL *url = [NSURL URLWithString:strUrl];
NSMutableString *mStrInfo = [[NSMutableString alloc] initWithString:@"URL相关信息如下:\n"];
[mStrInfo appendFormat:@"absoluteString: %@\n", [url absoluteString]];
[mStrInfo appendFormat:@"relativeString: %@\n", [url relativeString]];
[mStrInfo appendFormat:@"baseURL: %@\n", [url baseURL]];
[mStrInfo appendFormat:@"absoluteURL: %@\n", [url absoluteURL]];
[mStrInfo appendFormat:@"scheme: %@\n", [url scheme]];
[mStrInfo appendFormat:@"resourceSpecifier: %@\n", [url resourceSpecifier]];
[mStrInfo appendFormat:@"host: %@\n", [url host]];
[mStrInfo appendFormat:@"port: %@\n", [url port]];
[mStrInfo appendFormat:@"user: %@\n", [url user]];
[mStrInfo appendFormat:@"password: %@\n", [url password]];
[mStrInfo appendFormat:@"path: %@\n", [url path]];
[mStrInfo appendFormat:@"fragment: %@\n", [url fragment]]; //编码后的字符串,获取到的值为null,而不是正常情况的a=1;最终a=1被作为query的值内容了
[mStrInfo appendFormat:@"parameterString: %@\n", [url parameterString]];
[mStrInfo appendFormat:@"query: %@\n", [url query]];
[mStrInfo appendFormat:@"relativePath: %@\n", [url relativePath]]; //如果baseURL是nil,relativePath就跟path一样
[mStrInfo appendFormat:@"pathComponents: %@\n", [url pathComponents]]; NSLog(@"%@", [mStrInfo stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]); //对字符串进行解码
} int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *strUrl = @"http://www.cnblogs.com:80/huangjianwu/archive/2015/06.html?author=KenmuHuang黄&page=1#a=1";
testURL(strUrl);
}
return ;
}

结果:

 -- ::29.496 OCNSURL[:] URL相关信息如下:
absoluteString: http://www.cnblogs.com:80/huangjianwu/archive/2015/06.html?author=KenmuHuang黄&page=1#a=1
relativeString: http://www.cnblogs.com:80/huangjianwu/archive/2015/06.html?author=KenmuHuang黄&page=1#a=1
baseURL: (null)
absoluteURL: http://www.cnblogs.com:80/huangjianwu/archive/2015/06.html?author=KenmuHuang黄&page=1#a=1
scheme: http
resourceSpecifier: //www.cnblogs.com:80/huangjianwu/archive/2015/06.html?author=KenmuHuang黄&page=1#a=1
host: www.cnblogs.com
port:
user: (null)
password: (null)
path: /huangjianwu/archive//.html
fragment: (null)
parameterString: (null)
query: author=KenmuHuang黄&page=#a=
relativePath: /huangjianwu/archive//.html
pathComponents: (
"/",
huangjianwu,
archive,
,
"06.html"
)

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

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

    一.block声明 1.无参数,无返回值: void (^sayHi)(); 2.有参数,有返回值: NSInteger (^operateOfValue)(NSInteger num); block ...

  2. [转] 从 C 到 Objective C 入门1

    转自: http://blog.liuhongwei.cn/iphone/objective-c/ 进军iPhone开发,最大的难点之一就是怪异的Objective C语法了.不过,了解之后才发现,原 ...

  3. iOS开发——语法篇OC篇&高级语法精讲二

    Objective高级语法精讲二 Objective-C是基于C语言加入了面向对象特性和消息转发机制的动态语言,这意味着它不仅需要一个编译器,还需要Runtime系统来动态创建类和对象,进行消息发送和 ...

  4. iOS开发常用的第三方类库

    在iOS开发中不可避免的会用到一些第三方类库,它们提供了很多实用的功能,使我们的开发变得更有效率:同时,也可以从它们的源代码中学习到很多有用的东西. Reachability 检测网络连接 用来检查网 ...

  5. Windows下编译objective-C

    Windows下编译objective-C 2011-08-31 14:32 630人阅读 评论(0) 收藏 举报 windowscocoa工具objective clibraryxcode   目录 ...

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

    原文: http://blog.csdn.net/xiazailushang/article/details/9716043 在iOS开发中不可避免的会用到一些第三方类库,它们提供了很多实用的功能,使 ...

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

    iOS开发之常用第三方框架(下载地址,使用方法,总结) 说句实话,自学了这么久iOS,如果说我不知道的但是又基本上都摸遍了iOS相关知识,但是每次做项目的时候,遇到难一点的地方或者没试过的东西就闷了. ...

  8. ios学习笔记之2天来总结

    学了2天,小结下. ios的基本代码执行流程: 与java的基本异同: 异: 1.基类:java中Object是所有类的父类,而objective-c的根类为NSObject 2.默认访问类型:jav ...

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

    我使用的版本 Pentaho BI Server 5.3.0.0.213 CDE/CDF/CDA/CCC 15.04.16 stable   Q: 如何设置表格中各种提示文字的语言(默认为英语)? C ...

随机推荐

  1. python read file(f,csv)

    import csv def readfile0(): print('test read file') in_file = open('C:\python\demo\LiaoXueFeng\data\ ...

  2. 正则表达式的使用(C#)

    1, C#中与正则表达式相关类. C#中与正则表达式相关类的几个常用类是Regex,Match,Group,Captrue,RegexOption首先我们看看这几个类的类图关系,如何你有正则表达式基础 ...

  3. jquery 异步处理

    <!DOCTYPE html> <head> <script type="text/javascript" src="jquery-1.12 ...

  4. java中unicode和中文相互转换

    package test.com.gjob.services; import java.util.Properties; public class Test { public static void ...

  5. git基本操作:上传代码

    利用git将本地代码提交到远程服务器一般分为如下5个步骤: 一.查看当前文件的状态 使用git status命令可以查看有那些文件进行了修改,一般有下面几个状态: 1.Untracked: 未跟踪, ...

  6. ubuntu14.04 3D桌面效果制作

    参考:http://www.360doc.com/content/14/0919/22/11681374_410808557.shtml

  7. Building Apache Thrift on CentOS 6.5

    Building Apache Thrift on CentOS 6.5 Starting with a minimal installation, the following steps are r ...

  8. 启动LINUX系统后,进入图形化界面的命令

    1.进入xWindow的命令 $startx回车 或者修改/etc/inittab文件 cd /etc vi inittab 寻找: id:3:initdefault: 改为: id:5:initde ...

  9. 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。

    题目描述 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数. 输入描述: 输入一个int型整数 输出描述: 按照从右向左的阅读顺序,返回一个不含重复数字的新的整数 输入例子 ...

  10. java不确定参数个数方法例子

    package test; public class myTest { // 根据输入的参数动态生成数组 public static int max(int... param) { int max = ...