Objective-C 语法之 NSURL
有时我们需要获取请求地址的相关信息,这时我们就可以用 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的更多相关文章
- 初学Objective - C语法之代码块(block)
一.block声明 1.无参数,无返回值: void (^sayHi)(); 2.有参数,有返回值: NSInteger (^operateOfValue)(NSInteger num); block ...
- [转] 从 C 到 Objective C 入门1
转自: http://blog.liuhongwei.cn/iphone/objective-c/ 进军iPhone开发,最大的难点之一就是怪异的Objective C语法了.不过,了解之后才发现,原 ...
- iOS开发——语法篇OC篇&高级语法精讲二
Objective高级语法精讲二 Objective-C是基于C语言加入了面向对象特性和消息转发机制的动态语言,这意味着它不仅需要一个编译器,还需要Runtime系统来动态创建类和对象,进行消息发送和 ...
- iOS开发常用的第三方类库
在iOS开发中不可避免的会用到一些第三方类库,它们提供了很多实用的功能,使我们的开发变得更有效率:同时,也可以从它们的源代码中学习到很多有用的东西. Reachability 检测网络连接 用来检查网 ...
- Windows下编译objective-C
Windows下编译objective-C 2011-08-31 14:32 630人阅读 评论(0) 收藏 举报 windowscocoa工具objective clibraryxcode 目录 ...
- 【转】iOS开发常用的第三方类库
原文: http://blog.csdn.net/xiazailushang/article/details/9716043 在iOS开发中不可避免的会用到一些第三方类库,它们提供了很多实用的功能,使 ...
- iOS开发之常用第三方框架(下载地址,使用方法,总结)
iOS开发之常用第三方框架(下载地址,使用方法,总结) 说句实话,自学了这么久iOS,如果说我不知道的但是又基本上都摸遍了iOS相关知识,但是每次做项目的时候,遇到难一点的地方或者没试过的东西就闷了. ...
- ios学习笔记之2天来总结
学了2天,小结下. ios的基本代码执行流程: 与java的基本异同: 异: 1.基类:java中Object是所有类的父类,而objective-c的根类为NSObject 2.默认访问类型:jav ...
- Pentaho BI server 中 CCC table Component 的使用小技巧
我使用的版本 Pentaho BI Server 5.3.0.0.213 CDE/CDF/CDA/CCC 15.04.16 stable Q: 如何设置表格中各种提示文字的语言(默认为英语)? C ...
随机推荐
- JAVA-数据库之添加记录
相关资料:<21天学通Java Web开发> 添加记录1.使用语句对象Statement的executeUpdate()方法可以很方便地实现添加记录.2.只需要在executUpdae() ...
- 基于jquery下拉列表树插件代码
分享一款基于jquery下拉列表树插件代码.这是一款实用的jquery 树形下拉框 下拉树代码下载.效果图如下: 在线预览 源码下载 实现的代码. html代码: <table width= ...
- WebApi增删改查Demo
1.新建webapi项目 2.配置WebApiConfig public const string DEFAULT_ROUTE_NAME = "MyDefaultRoute"; p ...
- [转]MySQL-5.7 Update语句详解
原文地址:https://www.cnblogs.com/tongxiaoda/p/7908977.html .语法 (1)单表 UPDATE [LOW_PRIORITY] [IGNORE] tabl ...
- bzoj1103【POI2007】大都市meg
1103: [POI2007]大都市meg Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1544 Solved: 776 [Submit][St ...
- [Linux基础环境/软件]Linux下安装mysql
我是使用免安装的包mysql-5.5.28-linux2.6-x86_64.tar.gz(在http://dev.mysql.com/downloads/可以下载到最新的包)的.直接解压,然后配置,初 ...
- [RTC]系统和RTC的时间保持一致
hwclock输出的格式似乎是没有格式化的命令,所以只能修改date date "+%a %d %b %Y %I:%M:%S %p %Z"
- 接口与virtual,override,new关键字
一,类继承接口 1,首先我们定义一个简单的ITeacher接口,并定义一个Professor类继承它. public interface ITeacher { void Print(); } publ ...
- 【转】c#的逆向工程-IL指令集
转载自:http://www.cnblogs.com/davyjiang/articles/1337400.html 一些 IL 语言解释: 跳转指令集合Beq 如果两个值相等,则将控制转移到目标指令 ...
- Spring Cloud Config 配置高可用集群
详细参考:<Sprin Cloud 与 Docker 微服务架构实战>p163-9.10节 spring cloud config 与 eureka 配合使用 我就不写了,请参见本书章节.