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 ...
随机推荐
- CTF之PHP黑魔法总结
继上一篇php各版本的姿势(不同版本的利用特性),文章总结了php版本差异,现在在来一篇本地日记总结的php黑魔法,是以前做CTF时遇到并记录的,很适合在做CTF代码审计的时候翻翻看看. 一.要求变量 ...
- windows7安装tensorflow-gpu开发环境
1.安装anaconda anaconda想必大家都不陌生,由于网站登不上去,我找到了清华大学的一个开源镜像,下载地址为http://mirrors.tuna.tsinghua.edu.cn/help ...
- [转]layDate显示默认时间
原文地址:https://blog.csdn.net/u011870547/article/details/72540074 jsp: <div class="form-group&q ...
- 微服务之springCloud-hystrix参数详解(八)
简介 上节我们讨论了hystrix+feign+ribbon,但是可能很多人都知道hystrix还有线程隔离,信号量隔离,等等各种参数配置,在这几就记录下hystrix的参数, 一.hystrix参数 ...
- poj3436 ACM Computer Factory, 最大流,输出路径
POJ 3436 ACM Computer Factory 电脑公司生产电脑有N个机器.每一个机器单位时间产量为Qi. 电脑由P个部件组成,每一个机器工作时仅仅能把有某些部件的半成品电脑(或什么都没有 ...
- 老项目Xcode5.1编译器错误
老项目编译器错误html, body {overflow-x: initial !important;}html { font-size: 14px; } body { margin: 0px; pa ...
- InstallShield脚本事件
脚本事件主要有三大类:Before Move Data(安装数据前).Move Data(安装数据过程中).After Move Data(安装数据后). OnBegin:在初始化后,被调用 OnFi ...
- Android——开源框架Universal-Image-Loader + Fragment使用+轮播广告
原文地址: Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用 Android 开源框架Universal-Image-Loader完全解析(二) ...
- Java编程的逻辑 (64) - 常见文件类型处理: 属性文件/CSV/EXCEL/HTML/压缩文件
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...
- PAGED_CODE()
#if DBG #define PAGED_CODE() \ /*APC_LEVEL*/) { \ VideoPortDebugPrint(, "Video: Pageable code c ...