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请求网络的更多相关文章

  1. Android请求网络共通类——Hi_博客 Android App 开发笔记

    今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...

  2. Android 手机卫士--构建服务端json、请求网络数据

    本文地址:http://www.cnblogs.com/wuyudong/p/5900384.html,转载请注明源地址. 数据的传递 客户端:发送http请求 http://www.oxx.com/ ...

  3. 安卓中自定义并使用Volley框架请求网络

    大家好,今天我们讲一下如何使用Volley框架请求网络,为何要使用Volley框架,这就要先说一下使用Volley框架请求网络的优点了,volley是易于定制的,即你可以根据需求来设定volley框架 ...

  4. 在Service服务中请求网络

    一.startservice方式启动 第一次startservice启动服务的时候,会走oncreate和onstart方法, 第二次startservice启动服务的时候,会走onstart方法, ...

  5. swift Alamofire请求数据与SwiftJson解析

    一直在研究swift 程序最重要的是什么???答案当然是数据啦.  数据对一个程序的影响有多大自己想去吧!!!如果你非要说不重要,那你现在就可以关网页了  哈哈哈哈哈 我呢  swift新手  菜鸟一 ...

  6. Android - 使用Volley请求网络数据

    Android - 使用Volley请求网络数据 Android L : Android Studio 14 个人使用volley的小记,简述使用方法,不涉及volley源码 准备工作 导入Volle ...

  7. 解决React Native使用Fetch API请求网络报Network request failed

    问题来源: 1 . 在测试fetch数据请求时,Xcode9.0以上的无法请求https, 需要在Xcode中加载项目后修改Info.plist的相关配置,具体如下参考 问题及解决方法一模一样,不再重 ...

  8. 安卓请求网络错误 直接在main Thread 进行网络操作出现maintreamexception

    StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads().detectDiskWrites ...

  9. JavaWeb 获取请求网络协议、IP、端口号、项目根路径

      JavaWeb 获取请求网络协议.IP.端口号.项目根路径 CreateTime--2018年6月1日16点32分 Author:Marydon 1.需求 在项目中,需要使用Java向本程序发送r ...

随机推荐

  1. js-jQuery性能优化(二)

    5.数组方式使用jQuery对象 使用jQuery选择器获取结果是一个jQuery对象.然而,jQuery类库会让你感觉正在使用一个定义了索引和长度的数组.在性能方面,建议使用简单的for或者whil ...

  2. 【读书笔记】iOS-报刊杂志-Newsstand应用编程

    一,使用Newsstand Kit API 苹果公司在iOS5之后提供了电子报刊杂志开发API-Newsstand Kit.Newsstand Kit 只有3个类:NKLibrary,NKIssue和 ...

  3. 纯小白入手 vue3.0 CLI - 2.6 - 组件的复用

    vue3.0 CLI 真小白一步一步入手全教程系列:https://www.cnblogs.com/ndos/category/1295752.html 我的 github 地址 - vue3.0St ...

  4. 腾讯Ocr文字识别

    简述 上篇文章记录了百度Ocr的两种模式用法,接下来这篇文章开始记录腾讯Ocr的使用方法.腾讯Ocr的通用印刷体识别模式使用比较简单,直接接入sdk即可,但手写体的识别相对比较麻烦,需要自己post表 ...

  5. redis学习历程

    redis只知道作用于缓存,其它一无所知,所以现在系统的 学习下,这样应用的时候可以考虑多面性和实用性 首先先了解一下redis的背景和概念 背景 Redis是一个开源的使用ANSI C语言编写.支持 ...

  6. Python+Selenium笔记(十八):持续集成jenkins

    (一)安装xmlrunner 使用Jenkins执行测试时,测试代码中会用到这个模块. pip install xmlrunner (二)安装jenkins (1)   下载jekins https: ...

  7. Python+Selenium笔记(二):配置谷歌+IE环境

    #有的时候可能要访问外国的网站下载资料或工具,这时可能出现各种问题,例如谷歌人机验证显示不了.网站打不开等,建议使用一个FQ软件 (一)  设置IE (1)   http://docs.seleniu ...

  8. [CENTOS7] 将域群组加入到Sudoer里

    文章来源:https://derflounder.wordpress.com/2012/12/14/adding-ad-domain-groups-to-etcsudoers/ Adding AD d ...

  9. MySQL索引原理以及类型

    1.什么是索引 索引是在MySQL的存储引擎上,对其表中的某个列或多列通过一些算法实现可快速查询出结果的一种方法. 2.为什么要有索引 就像一本书要有目录一样,我们可快速通过目录来查找对应的章节得出结 ...

  10. csv文件的读取

    .csv Introduction CSV是一种常以逗号或者制表符分割的文件格式. 利用Excel创建一个csv文件 用记事本打开,实际上是这样子的: 读取csv文件 直接用open()打开 with ...