Swift中的HTTP请求
博客专区 > evil_01 的博客 > 博客详情
Swift中的HTTP请求
evil_01 发表于2年前
Swift中的HTTP请求
  • 发表于 2年前
  • 阅读 70
  • 收藏 3
  • 点赞 2
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

摘要: Swift中的HTTP请求

iOS开发中大部分App的网络数据交换是基于HTTP协议的。本文将简单介绍在Swift中使用HTTP进行网络请求的几种方法。

注意:网络请求完成后会获得一个NSData类型的返回数据,如果数据格式为JSON,那么可以使用系统自带的NSJSONSerialization类来解析数据;或者使用SwiftyJSON库的使用和思考一文中提到的JSON解析库来解析数据。

  1. 使用NSURLConnection 下面例子使用NSURLConnection实现了一个简单的异步GET操作:

func requestUrl(urlString: String){ var url: NSURL = NSURL(string: urlString) let request: NSURLRequest = NSURLRequest(URL: url)

    NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue(), completionHandler:{
        (response, data, error) -> Void in

            if error? {
                //Handle Error here
            }else{
                //Handle data in NSData type
            }

        })
}

2. 使用YYHRequest-Swift库
这个库通过封装NSURLConnection和NSOperationQueue实现了简单的HTTP GET/POST/PUT/DELETE操作:

let request = YYHRequest(url: NSURL(string: "http://www.google.com/"))

request.loadWithCompletion { response, data, error in // request complete! }


3. 使用SwiftHTTP库。
这个库通过封装NSURLSession,提供了GET/POST/PUT/DELETE以及上传和下载的支持,比较全面:

var request = HTTPTask() request.GET("http://vluxe.io", parameters: nil, success: {(response: AnyObject?) -> Void in

},failure: {(error: NSError) -> Void in

})
4. 使用Objective-C中的AFNetworking网络库
AFNetworking库是在iOS开发领域享有盛名、功能强大的网络请求库。

首先将AFNetworking库引入工程,请参考这篇教程
然后在<ProjectName>-Bridging-Header.h头文件中引入AFNetworking:
#import “AFNetworking/AFNetworking.h”
下面简单展示了AFNetworking中GET的用法:

   

func requestUrl(urlString: String) { let manager = AFHTTPRequestOperationManager()

    let params = ["a":1, "b":2]

    manager.GET(urlString,
        parameters: params,
        success: { (operation: AFHTTPRequestOperation!,
            responseObject: AnyObject!) in

            let responseDict = responseObject as NSDictionary!

        },
        failure: { (operation: AFHTTPRequestOperation!,
            error: NSError!) in
            //Handle Error
        })
}
实例
最后,我写了一个简单的例子来通过调用金山词霸的API获取单词swift的解释。项目使用SwiftHTTP来作网络请求,使用SwiftyJSON来解析JSON数据,代码托管在Github,核心代码如下:

        //请求金山词霸API获取单词`swift`的解释


var request = HTTPTask() var params: Dictionary<String, AnyObject> = ["w": "swift", "key": "30CBA9DDD34B16DB669A9B214C941F14", "type": "json"] request.GET("http://dict-co.iciba.com/api/dictionary.php", parameters: params, success: {(response: AnyObject?) -> Void in

            let json = JSONValue(response!)
            println("\(json)")

        },failure: {(error: NSError) -> Void in

            println("\(error)")
        })
标签: swift
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 8
博文 40
码字总数 26544
×
evil_01
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: