iOS网络入门

<h2>网络</h2>

<h3>连接</h3>

<ul>
<li>使用Berkeley sockets API</li>
<li>Windows,OS X,iOS一样</li>
<li>底层API</li>
<li>网络请求的3个类

<ol>
<li> <code>NSURL</code></li>
<li> <code>NSURLRequest</code></li>
<li> <code>NSURLConnection</code></li>
</ol>
</li>
</ul>

<h3><code>NSURL</code></h3>

<ul>
<li>创建URL:

<ul>
<li><code>NSURL *myURL = [NSURL URLWithString:@"http://blahblah.com"];</code></li>
<li>提供的字符串必须是完整,格式正确的URL</li>
<li><p>格式不正确,将返回<code>nil</code></p></li>
<li><p><code>NSURL *relativeURL = [NSURL URLWithString:@"resources/index.html" relativeToURL:[NSURL URLWithString:@"http://blahblah.com/"]];</code></p></li>
<li><p>创建好URL后,可获取与它相关的信息</p>

<ul>
<li>如主机名

<ul>
<li><code>NSString *host = [relativeURL host];</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>可变URL:<code>NSMutableURL</code></li>
<li>本地文件也可用URL

<ul>
<li>但使用<code>file:</code>格式</li>
<li><code>file://localhost/Applications/</code></li>
<li>创建文件URL:<code>NSURL *myFileURL = [NSURL fileURLWithPath:@"/Applications/"];</code></li>
</ul>
</li>
</ul>

<h3><code>NSURLRequest</code></h3>

<ul>
<li><code>URL</code>对象,指向资源位置</li>
<li><code>NSURLRequest</code> 描述如何去访问资源,如

<ul>
<li>将无回复的请求保留多久后算超时</li>
<li>是否需要使用缓存,如何使用缓存</li>
<li>如果请求是一个HTTP请求,要使用哪种请求方法(GET, POST, PUT...),HTTP请求主体是什么</li>
</ul>
</li>
<li>只拥有一个NSURL对象

<ul>
<li><code>NSURLRequest *request = [NSRequest requestWithURL:myURL];</code></li>
</ul>
</li>
<li>拥有关于请求如何执行的更多控制

<ul>
<li><code>requestWithURL:cachePolicy:timeoutInterval:</code></li>
<li>由用户指定如何缓存下载的内容,请求在终止前需要等待视时长</li>
</ul>
</li>
<li>允许创建后进行配置

<ul>
<li><code>NSMutableURLRequest</code></li>
<li><p>如,发送<code>POST</code>请求活对请求进行修改</p>

<pre><code> NSMutableURLRequest *mutableRequest = [NSMutableURLRequest requestWithURL:myURL];
[mutableRequest setHTTPMethod:@"POST"];
</code></pre></li>
</ul>
</li>
</ul>

<h3><code>NSURLConnection</code></h3>

<ul>
<li>管理连接的生命周期</li>
<li>工作方式

<ul>
<li>接收一个<code>NSURLRequest</code>,到网络上执行该请求</li>
<li>当请求完成后,一个代码段(block)运行,传递(服务器的响应,加载的数据以及可能发生的错误,以上使用<code>NSData</code>封装)</li>
<li>用户将<code>NSData</code>对象转换为可用格式(文本,图片)</li>
</ul>
</li>
</ul>

<h3><code>NSURLResponse</code></h3>

<ul>
<li>描述服务器对请求的初始响应

<ul>
<li>下载文件的预计大小(字节为单位)</li>
<li>服务器对该文件的推荐文件名</li>
</ul>
</li>
<li><code>NSHTTPURLResponse</code>

<ul>
<li>发出的是HTTP请求,服务器的响应将是这个东西的一个实例</li>
<li>包含HTTP的状态码,服务器发送的数据包头部</li>
</ul>
</li>
<li>通常,不需要自己创建,而<em>在<code>NSURLConnection</code>对象第一次成功获取服务器发送的响应并开始下载内容后,从它那里直接获取</em></li>
</ul>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS开发系列--网络开发 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可...
    lichengjin阅读 3,721评论 2 7
  • 218.241.181.202 wxhl60 123456 192.168.10.253 wxhl66 wxhl6...
    CYC666阅读 1,439评论 0 6
  • 同步请求可以从因特网请求数据, 一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成, 才可以进行下一步操...
    小灬博阅读 894评论 2 4
  • iOS网络编程读书笔记 Facade Tester客户端门面模式的实例(被动版本化) 被动版本化,所以硬编码URL...
    melouverrr阅读 1,626评论 3 7
  • 一、网络基础知识介绍 1、为什么要学习网络编程?---pptx介绍。 2、网络的基本概念---pptx介绍。 >什...
    小番茄阳阳阅读 668评论 0 0