iOS网络入门

作者: 扬扬扬 | 来源:发表于2015-06-25 00:49 被阅读127次

    <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网络入门

        本文链接:https://www.haomeiwen.com/subject/cmheqttx.html