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 ...
随机推荐
- 纯小白入手 vue3.0 CLI - 2.2 - 组件 home.vue 的初步改造
vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 我的 github 地址 - vue3.0St ...
- 编译64位cu文件的设置
作者:朱金灿 来源:http://blog.csdn.net/clever101 CUDA(ComputeUnified Device Architecture),是显卡厂商NVIDIA推出的运 ...
- [性能调优]在PeopleSoft中使用函数索引
那些没有在PeopleSoft系统遇到性能问题的人,特别是基于Oracle数据库的PeopleSoft,可能不知道基于函数的索引. 根据定义,基于函数的索引是使用如下方法定义的: 基于表达式,例如算术 ...
- iftop 命令
在Linux中有一个可以实施监控网络流量的一个工具那就是我们这次要说的iftop命令,这个命令不是系统自带的内置命令,在使用之前是需要先进行安装的 安装方式:yum -y install iftop就 ...
- mongodb2.X添加权限
1.连接mongodb数据库(如果mongo命令没有做环境变量配置,需要定位到有mongo命令的目录) root@AY140709212620347s22Z:~# mongo MongoDB shel ...
- 记一款bug管理系统(bugdone.cn)的开发过程(4) - 新增BugTalk功能
测试人员提出一个Bug,如果开发人员对Bug有疑义,会直接面对面讨论或者通过QQ等线上聊天工具讨论,但过后再去找讨论记录会很麻烦.因此BugDone提出一个全新的概念:将问题的讨论留在问题内.BugD ...
- SQL删除指定条件的重复数据,只保留一条
BEGIN DELETE TB FROM TableName TB WHERE TB.ID IN (SELECT MIN(ID) FROM TableName TB2 GROUP BY TB2.Col ...
- 通过HTTP参数污染绕过WAF拦截 (转)
上个星期我被邀请组队去参加一个由CSAW组织的CTF夺旗比赛.因为老婆孩子的缘故,我只能挑一个与Web漏洞利用相关的题目,名字叫做”HorceForce”.这道题价值300点.这道题大概的背景是,你拥 ...
- mysql 5.5 数据库 utf8改utf8mb4
由于需要用到utf8mb4,之前是utf8现在给改成utf8mb4 查看当前环境 SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_ ...
- WPScan扫描Wordpress漏洞
一.什么是Wpscan?什么是Wordpres? 1.Wpscan WPScan是一个扫描WordPress漏洞的黑盒子扫描器,可以扫描出wordpress的版本,主题,插件,后台用户以及爆破后台用户 ...