Alamofire请求网络

HTTP - GET和POST请求
- 如果要传递大量数据,比如文件上传,只能用POST请求
- GET的安全性比POST要差些,如果包含机密/敏感信息,建议用POST
- 如果仅仅是索取数据(数据查询),建议用GET
- 如果是增加、修改、删除数据,建议使用POST
iOS中的HTTP
- NSURLConnection:用法简单,最古老最经典最直接的一种方案
- NSURLSession:iOS7新出的技术,功能比NSURLConnection更加强大
- AFNetworking:简单易用,提供了基本够用的常用功能
- Alamofire:纯Swift网络请求库
Alamofire特点:
1.纯Swift编写的HTTP网络库
2.链式请求、响应
3.URL/JSON/plist格式参数
4.上传文件/数据/流/多格式数据
5.断点续传
6.NSURLCredential授权
7.HTTP响应验证
8.NSProgress&进度闭包
使用CocoaPods安装:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!
target 'AlamofireDemo' do
pod 'Alamofire'
pod 'SwiftyJSON'
end
- 请求:NSURLRequest
- 回复:NSHTTPURLResponse
- 数据:NSData
- 错误:NSError
Alamofire基本用法:
import Alamofire
Alamofire.request(.GET,"https://httpbin.org/get")
响应处理:

响应序列化:
response()
responseData()
responseString(encoding:NSStringEncoding)
responseJSON(options:NSJSONReadingOptions)
responsePropertyList(options:NSPropertyListReadOptions)
HTTP方法:
public enum Method:String{
case OPTIONS,GET,HEAD,POST,PUT,PATCH,DELETE,TRACE,CONNECT
}
参数:
let parameters=[
"foo":"bar",
"baz":["a",],
"qux":[
"x":,
"y":,
"z":
]
]
参数Encoding和Content-Type
enum ParameterEncoding{
case URL //application/x-www-form-urlencoded
case JSON //application/json
case PropertyList //application/x-plist
}
HHTP Headers:

支持的上传类型:
1.File
2.Data
3.Stream
4.MultipartFormData
下载代码演示:
let destination =
Alamofire.Request.suggestedDownloadDestination(directory:.DocumentDirectory,domain:.UserDomainMask)
Alamofire.download(.GET,"https://httpbin.org/stream/100",destinaion:destination)
认证:
- Authentication(认证)和Authorization(授权)
- NSURLCredential and NSURLAuthenticationChallenge
- 认证协议
1.HTTP Basic(每次发送相同认证信息)
2.HTTP Digest(每次发送的认证信息不一样)
验证(validation):
- Alamofire默认不验证响应的内容一律认为请求成功,需要验证
- 手动验证
- 自动验证
- status code:200...299
- 响应的Content-Type必须匹配请求头
Request对象:
- request,upload或者download
- authenticate,validate和responseData
- suspend()
- resume()
- cancel()会产生错误传递给已经注册的所有响应处理者
Response解析:
- strings,JSON,and property lists
- 自定义对象解析
- 自定义对象集合解析
URLStringConvertible:

具体代码实现传送门:AlamofireDemo
Alamofire请求网络的更多相关文章
- Android请求网络共通类——Hi_博客 Android App 开发笔记
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
- Android 手机卫士--构建服务端json、请求网络数据
本文地址:http://www.cnblogs.com/wuyudong/p/5900384.html,转载请注明源地址. 数据的传递 客户端:发送http请求 http://www.oxx.com/ ...
- 安卓中自定义并使用Volley框架请求网络
大家好,今天我们讲一下如何使用Volley框架请求网络,为何要使用Volley框架,这就要先说一下使用Volley框架请求网络的优点了,volley是易于定制的,即你可以根据需求来设定volley框架 ...
- 在Service服务中请求网络
一.startservice方式启动 第一次startservice启动服务的时候,会走oncreate和onstart方法, 第二次startservice启动服务的时候,会走onstart方法, ...
- swift Alamofire请求数据与SwiftJson解析
一直在研究swift 程序最重要的是什么???答案当然是数据啦. 数据对一个程序的影响有多大自己想去吧!!!如果你非要说不重要,那你现在就可以关网页了 哈哈哈哈哈 我呢 swift新手 菜鸟一 ...
- Android - 使用Volley请求网络数据
Android - 使用Volley请求网络数据 Android L : Android Studio 14 个人使用volley的小记,简述使用方法,不涉及volley源码 准备工作 导入Volle ...
- 解决React Native使用Fetch API请求网络报Network request failed
问题来源: 1 . 在测试fetch数据请求时,Xcode9.0以上的无法请求https, 需要在Xcode中加载项目后修改Info.plist的相关配置,具体如下参考 问题及解决方法一模一样,不再重 ...
- 安卓请求网络错误 直接在main Thread 进行网络操作出现maintreamexception
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads().detectDiskWrites ...
- JavaWeb 获取请求网络协议、IP、端口号、项目根路径
JavaWeb 获取请求网络协议.IP.端口号.项目根路径 CreateTime--2018年6月1日16点32分 Author:Marydon 1.需求 在项目中,需要使用Java向本程序发送r ...
随机推荐
- windows安装mysql数据库
一.下载安装包.进入mysql官网https://www.mysql.com/ 二.打开安装包安装 以上步骤直接点击next即可,遇到配置密码就配置下
- Dynamics CRM2016 如何删除Word/Excel Templates
创建模板的方式有两种,一种是创建个人级别的模板,如下面这种创建一个excel的模板 一种是在设置-模板中创建,但这需要管理员权限,从下图中可以看出个人级的模板在设置中是看不到的 那就涉及到一个问题了, ...
- Microsoft MVP MSDN Magazine 最新期分享
下载地址:http://1105insight.com/portal/wts/uemcmQeeDyaq%5Ev2gAe6c3b0Djd 可在线或下载查看
- tilestache
pip install tilestache -i https://mirrors.ustc.edu.cn/pypi/web/simple python C:/Python27/ArcGIS10.4/ ...
- Jenkins 为Jenkins添加Windows Slave远程执行python项目脚本
为Jenkins添加Windows Slave远程执行python项目脚本 by:授客 QQ:1033553122 测试环境 JAVA JDK 1.7.0_13 (jdk-7u13-windows ...
- Selenium win7+selenium2.0+python+JetBrains PyCharm环境搭建
win7+selenium2.0+python+JetBrains PyCharm环境搭建 by:授客 QQ:1033553122 步骤1:下载python 担心最新版的支持不太好,这里我下载的是py ...
- javascript的异步编程解决方案收集
缘起 没理解js异步的同学看下面的例子: for (var i = 0; i < 5; i++) { //模拟一个异步操作 setTimeout(() => { console.log(i ...
- 声明元素<%! %>、Scriptlet元素<% %>、表达式元素<%= %>、注释元素、输出特殊符号<%和%>
声明元素 <%! 类成员声明或方法声明 %> 在声明元素中编写的代码,将转译为Servlet中的类成员或方法. 重新定义jspInit()方法,或是在jspDestroy(),就是在声明元 ...
- [Android] 仿照 Last App Switcher 写的小程序
在Android众多工具类app中,Last App Switcher绝对算是一个让人用过就不会卸载的工具.LAS这个应用,它的功能很简单,就是通过一个浮动按钮实现在两个应用之间一键切换,但是非常 ...
- __MySQL 5.7 Replication 相关新功能说明
背景: MySQL5.7在主从复制上面相对之前版本多了一些新特性,包括多源复制.基于组提交的并行复制.在线修改Replication Filter.GTID增强.半同步复制增强等.因为都是和复制相 ...