加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift http post/get/delete/put

发布时间:2020-12-14 02:12:55 所属栏目:百科 来源:网络整理
导读:?? Swift中的HTTP请求 iOS开发中大部分App的网络数据交换是基于 HTTP 协议的。本文将简单介绍在Swift中使用HTTP进行网络请求的几种方法。 注意:网络请求完成后会获得一个NSData类型的返回数据,如果数据格式为JSON,那么可以使用系统自带的NSJSONSerializat
??

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库

这个库通过封装NSURLConnectionNSOperationQueue实现了简单的HTTP GET/POST/PUT/DELETE操作:

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

request.loadWithCompletion { response,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 

    })

4. 使用Objective-C中的AFNetworking网络库

AFNetworking库是在iOS开发领域享有盛名、功能强大的网络请求库。

  • 首先将AFNetworking库引入工程,请参考这篇教程
  • 然后在<ProjectName>-Bridging-Header.h头文件中引入AFNetworking:
    #import “AFNetworking/AFNetworking.h”

    下面简单展示了AFNetworkingGET的用法:

    func requestUrl(urlString: String) {
            let manager = AFHTTPRequestOperationManager()
    
            let params = ["a":1,"b":2]
    
            manager.GET(urlString,parameters: params,success: { (operation: AFHTTPRequestOperation!,responSEObject: AnyObject!) 
    
                    let responseDict = responSEObject as NSDictionary!
    
                },failure: { (operation: AFHTTPRequestOperation!in
                    Handle Error
                })
        }

    实例

    最后,我写了一个简单的例子来通过调用金山词霸的API获取单词swift的解释。项目使用SwiftHTTP来作网络请求,使用SwiftyJSON来解析JSON数据,代码托管在Github,核心代码如下:

    请求金山词霸API获取单词`swift`的解释
             HTTPTask()
            var params: Dictionary<String,AnyObject> = ["w": "swift","key": "30CBA9DDD34B16DB669A9B214C941F14","type": "json"]
            request.GET("http://dict-co.iciba.com/api/dictionary.php",0)">
    
                    let json = JSONValue(response!)
                    println("(json)")
    
                },0)">
    
                    println("(error)")
                })

    from:http://swiftist.org/topics/135

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读