关于URL地址

来源:互联网 发布:职称英语网络课程 编辑:程序博客网 时间:2024/06/14 08:43
<pre name="code" class="objc">今天上课内容比较含蓄,所以我听得也是比较含蓄不过刚上课的时候,珊哥的话,让我有一番领悟。珊哥三番两次提到了方法,今天脑袋昏昏沉沉的我却瞬间懂得了“方法”的奥妙~其实这么一想来发现,Xcode里面给我们提供了很多很多的方法,这就是为什么他经常让我们熟悉熟悉“方法”的原因了。我确实应该多多去熟悉方法。。上午讲的内容挺含蓄无比,我能说我现在什么都不记得了么今天的重要内容是URL,关于它的概念,超复杂格式,以及其相关的 NSURL类和 NSURLRequest类。首先为大家介绍两个术语:URL URIURI:Uniform Resource Identifier 叫做 通用资源        标识符 。    它是一种定位方法,Web上可用的每种资源( HTML文档、图像、视频片段、程序等 )是由URI(通用资源标识符)进行定位的。URL:Uniform Resource Locator 叫做通用资源     定位符 。   它是一种标识方法,Web上的网页和资源的地址,通常我们称URL为URL地址,简单点说,URL就是Web地址,俗称“网址”。URI=URL+URNURN 是——资源名字——识别资源URL 是——描述资源位置——识别资源URI 标识一个事物,URL定位一个事物;当然,位置同样可以标识一个事物,所以,每个URL都是一个URI, 但一个URI并不一定是一个URL。网址的通用格式是:<方案>://<用户>:<密码>@<主机>:<端口>/<路径>;<参数>?<查询>#<片段>URL的通用格式是:<scheme>://<user>:<password>@<host>:<port>/<path>;<parameters>? <query>#<fragment>没有任何网址URL可以包括所有的成分,但是可认为,这其中较为重要的是这三部分:方案<scheme>、主机<host>、路径<path>。方案<scheme>: 如HTTP、FTP、HTTPS、FILE等等,位置是在网址URL的最前端。用户名和密码<user>:<password>: 见'@',见用户名。http://anonymous:password@www.baidu.com主机名<host>:                 这是每个方案独有的!域名不可重复!经常见到主机名,如"www.baidu.com"但是你不会想到 这就是主机名。珊哥今天举的例子是百度的主机和戴维营的主机,还有他个人电脑的主机,其中还讲了内容放置的位置不一样,所以百度图片标志显示不出来的原因。路径<path>:                  见'/',见路径。参数<parameters>:            见';',见参数。路径的每个组件都提供自己的参数。查询<query>:                 见'?',见查询。查询的形式是以键值对出现。片段<fragment>:              见'#',见片段。关于网址的设计的原则:1、网址URL要是唯一的,与Internet上的对象一对一匹配,绝不重复。2、网址URL要尽可能短,尽可能简单。3、网址要有规律性,容易让别人读懂,如/events/2010/01指向日志 2010年 1月份的内容,那么/events/2009/01能让人联想到其指向日志 2009年 1月份的内容。  关于网址URL的编码:按规定只能使用英文字母、阿拉伯数字和某些标点符号,再加上某些保留字。但是汉字很混乱,规定中没有对某些汉字写出具体的编码方法,这个浏览器由决定,故有点混乱。关于两个重要的类:NSURL类 和  NSURLRequest类一、 NSURL类NSURL *url1 = [NSURL URLWithString:@"http://www.baidu.com/ aa/"];NSLog(@"host:%@ path:%@", [url host],[url path]);//定义一个NSURL类的对象url1,并且打印出他的主机和他的路径,由之前列出的可知,这个网址URL包括:方案、主机、路径。NSURL *url2 = [NSURL URLWithString:@"../index.html" relativeToURL:url1];NSLog(@"host:%@ path:%@", [url1 host],[url1 path]);//定义一个NSURL类的对象url2,并且打印出他的主机和路径,这两个是类方法,调用的系统提供的方法,这两个比较常用,command+右击," URLWithString "可见NSURL类的其他方法。NSString *homePath = NSHomeDirectory();将" NSHomeDirectory() "赋给" homePath "NSURL *fileUrl = [NSURL fileURLWithPath:homePath];NSLog(@"fileUrl:%@", fileUrl);//读取文件地址URL的代码。(ps:这里不是网址URL)不过这几行代码没有规律,所以自己记下来吧。以上代码只是稍稍练习打印出网址URL的几个重要部分以下列出了,较为常用的“方法”:-(NSString *)absoluteString;  //绝对字符串?-(NSString *)relativeString;  //相对字符串?-(NSString *)host;            //表示主机的字符串-(NSStrinh *)port;            //表示端口的字符串-(NSString *)user;            //表示用户名的字符串-(NSString *)password;        //表示密码的字符串-(NSString *)path;            //表示路径的字符串-(NSString *)fragment;        //表示片段的字符串-(NSString *)query;           //表示查询的字符串-(NSString *)parameterString; //表示参数的字符串?-(BOOL)isFileURL;             二、NSURLRequest类 / NSURLMutableRequest类1、顾名思义,NSURL+Request 肯定是跟请求有关的类,原来他封装了一个URL的请求信息。2、可以指定缓存策略。3、NSURLRequest类 将对象初始化以后不可被修改,而NSURLMutableRequest类是可变的,与之相反。--->>>NSURLRequest类//用NSURL构造一个请求对象NSURLRequest *request = [NSURLRequest requestWithURL:url1]; NSLog(@"request:%@",request);//打印http请求的方法NSLog(@"request method:%@", [request HTTPMethod]);//打印http请求的所以头部!NSLog(@"request header:%@", [request allHTTPHeaderFields]);--->>>NSURLMutableRquest类这是一个与NSURLRequest有这不同作用的类,他在初始化后仍能对URL请求对象进行修改,可以使用NSMutableRequest,可以修改的内容包括:1、缓存策略---不明白2、超时时间---明白是怎么回事3、URL对象---不明白4、主文档地址---不明白5、头信息---不明白6、上行内容---不明白7、请求方法---不明白8、Coolie---不明白如何获取网络数据:——同步方法发生请求并获取返回数据:—NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];同步请求和异步请求不太懂。


                                             
0 0