Swift 原生网络通信


IOS9.0后,就打算废弃NSURLConnection,主推NSURLSession


sendSynchronousRequest

同步Request
NSURLConnection.sendSynchronousRequest(request: NSURLRequest, returningResponse response: AutoreleasingUnsafeMutablePointer<NSURLResponse?>) throws -> NSData

<code class="language-Swift hljs cs has-numbering">    func usingSendSynchronousRequest(){
        <span class="hljs-keyword">do</span>{
            <span class="hljs-keyword">var</span> response:NSURLResponse?
            <span class="hljs-comment">// 发同步请求</span>
            <span class="hljs-keyword">let</span> data:NSData = <span class="hljs-keyword">try</span> NSURLConnection.sendSynchronousRequest(NSURLRequest(URL: NSURL(<span class="hljs-keyword">string</span>: <span class="hljs-string">"http://www.baidu.com"</span>)!), returningResponse: &response)

            <span class="hljs-keyword">if</span> <span class="hljs-keyword">let</span> d:NSData = data {
                NSLog(<span class="hljs-string">"\(NSString(data: d, encoding: NSUTF8StringEncoding))"</span>)
            }

            <span class="hljs-keyword">if</span> <span class="hljs-keyword">let</span> r:NSURLResponse = response{
                NSLog(<span class="hljs-string">"\(r)"</span>)
            }

        }<span class="hljs-keyword">catch</span> <span class="hljs-keyword">let</span> error <span class="hljs-keyword">as</span> NSError{
            NSLog(<span class="hljs-string">"\(error.localizedDescription)"</span>)
        }
    }</code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li></ul>

sendAsynchronousRequest

异步Request
NSURLConnection.sendAsynchronousRequest(request: NSURLRequest, queue: NSOperationQueue, completionHandler handler: (NSURLResponse?, NSData?, NSError?) -> Void)

<code class="language-Swift hljs coffeescript has-numbering">    func usingSendAsynchronousRequest(){
        <span class="hljs-regexp">//</span> 异步请求
        NSURLConnection.sendAsynchronousRequest<span class="hljs-function"><span class="hljs-params">(NSURLRequest(URL: NSURL(string: <span class="hljs-string">"http://www.baidu.com"</span>)!), queue: NSOperationQueue())</span> { <span class="hljs-params">(resp:NSURLResponse?, data:NSData?, error:NSError?)</span> -></span> Void <span class="hljs-keyword">in</span>
            <span class="hljs-keyword">if</span> <span class="hljs-reserved">let</span> <span class="hljs-attribute">e</span>:NSError = error{
                NSLog(<span class="hljs-string">"\(e.localizedDescription)"</span>)
            }<span class="hljs-keyword">else</span>{
                NSLog(<span class="hljs-string">"\(NSString(data: data!, encoding: NSUTF8StringEncoding))"</span>)
            }
        }
    }</code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul>

NSURLSession

NSURLSession实例化一个网络请求task
NSURLSession.dataTaskWithRequest(request: NSURLRequest, completionHandler: (NSData?, NSURLResponse?, NSError?) -> Void) -> NSURLSessionDataTask

<code class="language-Swift hljs coffeescript has-numbering">    func usingNSURLSession(){
        <span class="hljs-reserved">let</span> session = NSURLSession.sharedSession()
        <span class="hljs-reserved">let</span> request = NSURLRequest(<span class="hljs-attribute">URL</span>: NSURL(<span class="hljs-attribute">string</span>: <span class="hljs-string">"http://baidu.com"</span>)!)
        <span class="hljs-reserved">let</span> task = session.dataTaskWithRequest<span class="hljs-function"><span class="hljs-params">(request, completionHandler: { (data, response, error) -> Void <span class="hljs-keyword">in</span>
            <span class="hljs-reserved">let</span> string = NSString(data: data!, encoding: NSUTF8StringEncoding)
            NSLog(<span class="hljs-string">"\(string)"</span>)
        })</span>
        <span class="hljs-title">task</span>.<span class="hljs-title">resume</span><span class="hljs-params">()</span>
    }</span></code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值