一网络编程基础介绍
- ios9: 重大改变
(1)
NSURLConnection:ios9之前使用,之后弃用
NSURLSession ios7.0之后出来 ios9只能使用这个类
(2)后台服务器传输协议由HTTP改成HTTPS(都是超文本传输协议)
HTTP:Hypertext Transfer Protocol
https:Hyper Text Transfer Protocol over Secure Socket
Layer - 区别: https比http多了 安全套接字层 更安全都是超文本传输协议
(3)常用的请求方法
① get 数据写在URL后面
浏览器和服务器对URl长度有限制,因此在URL后面附带的参数是有限制的
② post
默认是get
(4) 一个URL加载的请求 NSURLRequest
NSURLRequest子类为NSMutableURLRequest 可以添加请求体 请求头 请求体就是body数据 请求头是格式
(5)注意在info.plist中添加 否则无法请求数据
info.plist -> App Transport Security Settings -> Allow Arbitrary Loads -> YES
二、网络环境判断
- 1、Reachability方法(可以在这下载demo研究)
- 步骤:
(1)导入Reachability类名
(2)初始化Reachability对象,HostName 尽量用一个比较稳定的网战
(3)添加观察者,接收网络环境发生改变的通知
(4)开始监测
(5)在通知中得到Reachability的对象 获得网络状态
注意下载Reachability这个demo地址ReachabilityDemo
下载之后导入类:
不再给出代码示例,可以查看demo
- 2、AFNetWorking网络环境判断(可以在这下载demo分析)
- 步骤:
AFNetworkReachabilityManager
(1)导入类库
(2)创建监测对象 使用类方法sharedManager 重点
(3)开始监测
(4)通过监测对象获得监测的结果 回调方法(setReachabilityStatusChangeBlock:) - 前期工作:在这下载AFNetWorking框架
- 导入框架:
-
代码示例:
//
// ViewController.m
// AFNetWorking
//
// Created by 王龙 on 16/3/27.
// Copyright © 2016年 Larry(Lawrence). All rights reserved.
//#import "ViewController.h" //1.导入框架 #import "AFNetworking.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.edgesForExtendedLayout = UIRectEdgeNone; self.view.backgroundColor = [UIColor greenColor]; // 2.初始化对象 // 注意用shareManger来初始化对象 AFNetworkReachabilityManager *reachabilityManger = [AFNetworkReachabilityManager sharedManager]; // 3.开始监测 [reachabilityManger startMonitoring]; // 4.获得网络状态 [reachabilityManger setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { NSString *statue; switch (status) { case AFNetworkReachabilityStatusUnknown:{ statue = @"未知的网络"; break; } case AFNetworkReachabilityStatusNotReachable:{ statue = @"无网络"; break; } case AFNetworkReachabilityStatusReachableViaWWAN:{ statue = @"蜂窝网络"; break; } case AFNetworkReachabilityStatusReachableViaWiFi:{ statue = @"WIFI的网络"; break; } default: break; } // 输出网络环境判断的结果 NSLog(@"%@",statue); }]; } @end