文档章节

Swift中的HTTP请求

evil_01
 evil_01
发布于 2016/05/13 14:31
字数 516
阅读 74
收藏 3
点赞 2
评论 0

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)")
        })

© 著作权归作者所有

共有 人打赏支持
evil_01
粉丝 8
博文 43
码字总数 27980
作品 0
卢湾
架构师
【原创】Swift服务启动架构分析

Swift中会用到三个非常有用的python模块它们分别是webob,eventlet,paste.deploy,其中webob提供了WSGI封装的Request,Response和其他的一些HTTP操作,eventlet是一个并行的网络编程库,Swift使...

zhouxingxing
2012/10/08
0
0
对于AlamoFire几点思考

本文由CocoaChina--BYB1132(论坛ID)翻译 原文:Thoughts On AlamoFire--Swift’s AFNetworking Implementation HTTP协议就是现代开发的同义词,对于有经验的iOS开发者来说, 熟悉并尽可能使...

刘星石
2016/03/02
15
0
Openstack swift对象存储

OpenStack Object Storage(Swift)是OpenStack开源云计算项目的子项目之一。Swift使用普通的服务器来构建冗余的、可扩展的分布式对象存储集群,存储容量可达PB级。Swift的是用Python开发。 ...

China_OS
2014/04/26
0
0
openstack swift middleware开发

首先MiddleWare核心代码,这段代码卸载swift的源代码目录下,~/swift/swift/common/middleware下新建deletionpreventing.py: 查看列表: 测试PUT请求: PUT成功; 测试DELETE请求: DELETE请...

Vincent-Duan
2016/10/12
2
0
Alamofire的设计之道

前言: Alamofire是一个由Swift编写的优雅的网络开发框架。 大部分用Swift编写的iOS App的网络模块都是基于Alamofire的。作为Swift社区最活跃的几个项目之一,有许多开发者在不断的对其进行完...

黄文臣
2017/06/15
0
0
Openstack Object Store(Swift)设置公有存储的方法

本文假设读者已对OOS有一定的认识了解并且已经自行成功搭建过Swift,背景还有部署方法这里就不多说了,这里Swift使用的身份认证组件为Keystone,参照官方文档步骤操作发现,对container设置A...

alanlqc
2013/09/09
0
2
Core Data 学习笔记 应用示例

目录 Core Data 学习笔记(一)框架简介 Core Data 学习笔记(二)被管理对象模型 Core Data 学习笔记(三)被管理对象 Core Data 学习笔记 应用示例 Core Data 学习笔记 常用链接整理 示例 ...

灰大羊
2015/07/30
0
0
Alamofire 4.4.0 发布,HTTP 网络开发工具包

Alamofire 4.4.0 发布了,Alamofire 是用一个功能强大的,用 Swift 语言编写的 HTTP 网络开发工具包,支持各种 HTTP Method、JSON、文件上传、文件下载和多种认证方法。 更新内容: 新增 一个...

王练
2017/03/02
709
0
OpenStack对象存储——Swift

OpenStack Object Storage(Swift)是OpenStack开源云计算项目的子项目之一,被称为对象存储,提供了强大的扩展性、冗余和持久性。本文将从架构、原理 和实践等几方面讲述Swift。 Swift并不是...

icheer
2013/08/16
0
0
[swift]-使用JavaScript解决WKWebView无法发送POST参数问题

基本实现思路: 1. 将一个包含JavaScript的POST请求的HTML代码放到工程目录中2. 加载这个包含JavaScript的POST请求的代码到WKWebView3. 加载完成之后,用Native调用JavaScript的POST方法并传入...

xiaoLoo
07/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

《Linux Perf Master》Edition 0.4 发布

在线阅读:https://riboseyim.gitbook.io/perf 在线阅读:https://www.gitbook.com/book/riboseyim/linux-perf-master/details 百度网盘【pdf、mobi、ePub】:https://pan.baidu.com/s/1C20T......

RiboseYim
11分钟前
0
0
conda 换源

https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels https://mir......

阿豪boy
21分钟前
0
0
Confluence 6 安装补丁类文件

Atlassian 支持或者 Atlassian 缺陷修复小组可能针对有一些关键问题会提供补丁来解决这些问题,但是这些问题还没有放到下一个更新版本中。这些问题将会使用 Class 类文件同时在官方 Jira bug...

honeymose
30分钟前
0
0
设计模式:代理模式

代理模式可以分为三种:静态代理,动态代理,cglib代理 1.静态代理:被代理的类需要实现一接口或是继承一父类 委托类(被代理的类): package com.java.pattern.proxy.staticdemo;publ...

人觉非常君
33分钟前
0
0
非常实用的IDEA插件之总结

1、Alibaba Java Coding Guidelines 经过247天的持续研发,阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的《阿里巴巴Java开发规约》扫描插件!该插件由阿里巴巴P3C项目组研发。P3C...

Gibbons
39分钟前
0
0
Tomcat介绍,安装jdk,安装tomcat,配置Tomcat监听80端口

Tomcat介绍 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。 java程序写的网站用tomcat+jdk来运行...

TaoXu
39分钟前
0
0
TensorFlow,从一个 Android Demo 开始

TensorFlow Android Demo 项目地址 Machine Learning 既然提到了 TensorFlow,那是不是得神经网络、机器学习了解下? 如果你能坚持把 机器学习速成课程 给啃完了,觉得还挺有兴趣的,那可以考...

孟飞阳
41分钟前
0
0
JVM学习笔记二:内存结构规范

1、JVM基本结构图 2、java堆(Heap) 3、方法区(Method Area) 4、程序计数器 5、JAVA栈图解 局部变量表:八大基本类型,还可以存储引用类型 上一篇:JVM学习笔记一:类加载机制介绍...

刘祖鹏
46分钟前
0
0
mui集成微信H5支付(返回白屏问题已经解决)

一.项目需求 因为公司人员缺少,没有专门开发安卓和ios的人员,为了项目尽早上线采用了混合APP开发的方式,我选择了MUI混合开发框架,项目中需要在用户购买VIP会员的时候进行支付,所以需要在项目...

银装素裹
50分钟前
0
0
SpringBoot集成Redis--配置自定义的RedisCacheManager

配置自定义的RedisCacheManager--1自定义键生成规则 默认的键生成器 当不指定缓存的key时,SpringBoot会使用SimpleKeyGenerator生成key。 SimpleKeyGenerator SimpleKey 查看源码可以发现,它...

karma123
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部