网络应用开发基础一

一.URL的概念与标准格式

    1.URI/URL:

       URI:Uniform Resource Identifier 统一资源标识符。

       Web上可用的每种资源 -HTML文档、图像、视频片段、程序等由一个通用的资源标识符(Uniform Resource Identifier, 简称URI)进行定位。

      URL:Uniform Resource Locator 统一资源定位符

      用于完整的地描述Internet上网页和其他资源的地址的一种标识方法。Internet上的每一个网页都具有一个唯一的名称标识。通常称之为URL地址,这种地址可以是本地磁盘也可以是局域网上的某一台计算机,更多的是在Internet上的站点。简单的说URl就是Web地址,俗称“网址”

2.什么是URL

       URI的概念比较偏广义上和理论上一点

       URL是UR的子集

      URI标识一个事物,URL定位一个事物;当然位置同样可以标识一个事物,所以每个URL都是一个URI,但是一个URI并不一定是一个URL。


      URL是因特网资源标准化名称。URL为用户及浏览器提供找到的信息所需的所有条件,它定义了用户所需的特定资源,它位于何处以及如何获取它。

      URI是一类通用的资源标识符,而URL只是它的子集。URI由URL和URN构成,URL通过描述资源的位置来标识资源,而URN则是通过名字来识别资源与位置无关。


    HTTP规范将更多通用的概念URI作为其资源标示符,但实际上,HTTP应用程序处理的只是URI的URl子集。

3.通用格式

<scheme>://<user>:<password>@<host>:<port>/<path>;<parameters>?<query>#<fragment>

几乎没有URL能够包含所有组件,一般只包含最重要的三部分:方案(<scheme>)、主机(<host>)和路径(<path>)

4.URL的语法组件

    

组件描述默认值举例及说明
方案访问服务器获取资源时使用什么协议,以及第一个字幕符号开始,由第一个“:“结束,大小写无关HTTP:HTTPS;MAILTO:FTP;RTSP:RTSPU:FILE:NEWS:TELNET
用户名和密码用户名:某些方案访问资源时需要提供资源名密码:用户名后面可能要包含密码,中间用“:”分隔匿名ftp://ftp.prep.ai.mit.edu/pub/gun
ftp://anonymoue@ftp.prep.ai.mit.edu/pub/gun
ftp://anonymoue:passwd@ftp.prep.ai.mit.edu/pub/gun
http://user:passwd@www.test.com
主机名和端口主机资源宿主服务器的主机名或者ip
端口:资源宿主服务器正在监听的端口,解决了在哪台机器上装载资源和在机器什么地方访问资源的两组信息
每个方案特有http://www.baidu.com:80/index.html
http://202.112.128.51:80/index.html
路径服务器上资源的本地名,有一个“/”将其与其他前面的组件分隔开。路径组件语法与服务器和方案有关http://www.jose-hardware.com/seasonal/index-fall.htm这其中/seasonal/index-fall.html则为路径
参数某些方案会用这个组件来指定输入参数,参数为名/值对,URL中可包含多个参数字段,他们之间以及与路径的其余部分用“;“分隔ftp://prep.ai.mit.edu/gnu;type=d中type=d为参数。
http://joes-hardware.com/harmmers;sale=false/indez.html;graphics=true路径组件每段都提供子集参数
查询某些方案会有查询自负串来传递参数以激活应用程序(比如数据库、公告板、所搜引擎以及其他因特网网关),查询组件的内容没有通用格式,用“?”将其与其余部分分隔开http://joes-hardware.com/inventory-check.cgi?item=1273&color=bulue&size=large多个查询条件使用“&”分隔
片段一小片或一部分资源名字,引用对象时,不会讲frag字段传送给服务器,这是字段在客户端内部使用,通过“#”将其与URL其余部分隔开http://twitter.github.com/bootstrap/scaffoldinig.html#gridSystem片段gridSystem引用了/scaffolding.html页面的一部分,这部分名为gridSystem

5.URL设计原则

    1.一个URL必须唯一地,永久地代表一个在线对象

          URL的最基本的使命是唯一地代表Internet上的一个对象,URL必须和Internet上的对象一对一匹配

   2.尽可能用户友好

          这是UR

L设计的根本,你的URL应该为最终用户而设计,保持URL友好的一个好办法是在保证可读性的同时让他尽可能短,短地址的崛起虽然能很好的使用地址变短,却在一定程度上失去了可读性。

    3.可预测的URL

         这也是URL一致性的一个表现,如果你的URL拥有很好的一致性,用户可以根据URL猜测别的内容URL。

         假如/events/2010/01指向2010年1月份的日程内容,那/events/2009/01应当指向2009年1月的日程。

6.URL编码问题

     URL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号

     这是因为网络标准RFC 1738做了硬性规定

        意味着,如果URL中有汉字,就必须编码后使用。但麻烦的是,RFC 1738没有规定具体的编码方式,而是交给应用程序(浏览器)子集决定这导致“URL编码”成为一个混乱的领域。

 

二 .掌握NSURL类的使用

   1. URL 对象的创建

NSURL *url = [NSURL URLWithString:@"http://www.baidu.com/aa/"];

NSLog(@"host:%@ path:%@", [url host],[url path]);

NSURL *url1 = [NSURL URLWithString:@"../index.html" relativeToURL:url];

NSLog(@"host:%@ path:%@," [url1 host] ,[url1 path]);

//文件URL

NSString *homePath = NSHomeDirectory();//获取文件路径

NSURL *fileUrl = [NSURL fileURLWith :homePath];

NSLog(@"fileUrl:%@",fileUrl);

2.熟悉常用用方法

-(NSString *)absoluteString

-(NSString *)relativeString

-(NSURL *)baseURL

-(NSURL *)absoluteURL

-(NSString *)absolutURL

-(NSString *)host

-(NSNumber *)port

-(NSString *)user

-(NSString *)password

-(NSString *)path

-(NSString *)fragment

-(NSString *)parameterString

-(NSString *)query

-(NSString *)relativePath


    NSURL *url = [NSURL URLWithString:@"http://xq:123456@www.baidu.com:80/aa/bb/c/;f=c?i=4&b=0"];

    NSLog(@"host:%@",[url host]);

    NSLog(@"path:%@",[url path]);

    NSLog(@"port:%@",[url port]);

    NSLog(@"user:%@",[url user]);

    NSLog(@"absoluteString:%@",[url absoluteString]);

    NSLog(@"relativeString:%@",[url relativeString]);

    NSLog(@"password:%@",[url password]);

    NSLog(@"parameterString:%@",[url parameterString]);

    NSLog(@"query:%@",[url query]);

    NSLog(@"relativePath:%@",[url relativePath]);

    if (![url isFileURL]) {

        NSLog(@"这不是一个文件URL");

    }

    //相对路径

    NSURL *url1 = [NSURL URLWithString:@"../../index.html" relativeToURL:url];

    NSLog(@"host:%@",[url1 host]);

    NSLog(@"path:%@",[url1 path]);

    NSLog(@"relativePath:%@",[url1 relativePath]);

    NSLog(@"absoluteURL:%@",[url1 absoluteURL]);

    NSLog(@"absoluteString:%@",[url1 absoluteString]);

    NSLog(@"relativeString:%@",[url1 relativeString]);

    //文件的URL

    NSString *homePath = NSHomeDirectory();

    //文件的URL只能用下面的方法

    NSURL *fileUrl = [NSURL fileURLWithPath:homePath];

    NSLog(@"fileUrl:   %@",fileUrl);




三 .NSURLRequest类的使用

NSURLRequest/NSURLMutableRequest类

      这个类封装了对一个URL的请求信息

     这个指定缓存策略

     对象初始化后不能修改,是一个不可变的请求

     //NSURLRequest

     //用NSURL构造一个请求对象

     NSURLRequest *request = [NSURLRequest requestWithURL:url1];

     NSLog(@"request :%@",request);

     //打印http请求的方法

     NSLog(@"request method:%@",[request HTTPMethod]);

     //打印http请求的索引头部

     NSLog(@"request header:%@",[request allHTTPHeaderFields]);


四 .NSURLMutableRequest类

    1. 如果需要在初始化后仍能对URL请求对象进行修改,可以使用NSMutableURLRequest,可以修改的内容包括:

     缓存策略

     超时时间

     URL对象

    主文档地址

    头信息

    上行内容(body)

     请求方法(get,post,等)

     Cookie

      2.获取网络请求数据

        NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值