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 ...
随机推荐
- 【Unity】角色沿路线移动/朝着目标移动
先在场景中放置一连串物体作为角色移动路线的关键点,可以把关键点的触发器Trigger拉得大一些方便角色接触到(如酷跑/赛车类项目可以把关键点的触发器做成拦截整个道路的墙面形状).让角色从开始位置朝着第 ...
- 【Android】Android6.0读取通话记录
需求:读取通话记录,然后列表显示,每条记录的数据包括姓名.号码.类型(来电.去电.未接,字体颜色分别为绿.蓝.红),然后长按条目弹出一个列表弹窗,显示[复制号码到拨号盘].[发短信].[打电话]. 先 ...
- 【进阶修炼】——改善C#程序质量(4)
46, 显示释放资源,需要实现IDisposable接口. 最好按照微软建议的Dispose模式实现.实现了IDisposable接口后,在Using代码块中,垃圾会得到自动清理. 47, 即使提供了 ...
- ElasticSearch 深度分页解决方案 {"index":{"number_of_replicas":0}}
常见深度分页方式 from+size es 默认采用的分页方式是 from+ size 的形式,在深度分页的情况下,这种使用方式效率是非常低的,比如 from = 5000, size=10, es ...
- Spring Cloud Config 配置中心 自动加解密功能 jasypt方式
使用此种方式会存在一种问题:如果我配置了自动配置刷新,则刷新过后,加密过后的密文无法被解密.具体原因分析,看 SpringCloud 详解配置刷新的原理 使用 jasypt-spring-boot- ...
- JQuery操作cookies
jQuery.cookie = function(name, value, options) { if (typeof value != 'undefined') { // name and valu ...
- [hadoop读书笔记] 第十章 管理Hadoop集群
P375 Hadoop管理工具 dfsadmin - 查询HDFS状态信息,管理HDFS. bin/hadoop dfsadmin -help 查询HDFS基本信息 fsck - 检查HDFS中文件的 ...
- 自然语言交流系统 phxnet团队 创新实训 项目博客 (七)
在本项目中使用到的“语音转文本”的技术总结: 语音转文本部分是调用的科大讯飞的在线语音,它的激发方式是按键,通过按钮触发开启安卓设备的录音,此部分需要在源码中写入关于安卓权限的要求,来调用安卓的录音权 ...
- Mac下Pycharm导入Python包
1.png 2.png 3.png
- python 百度图片爬虫
# -*- coding:utf-8 -*- #https://blog.csdn.net/qq_32166627/article/details/60882964 import requests i ...