本文共 3167 字,大约阅读时间需要 10 分钟。
1:先了解URL
url的全称是uniform resource locator,即统一资源定位符
通过一个url ,能找到互联网上唯一的1个资源
URL就是资源的地址、位置,互联网上的每个资源都有一个唯一的URL。
URL的基本格式=协议://主机地址/路径
如http://www.baidu.com
协议:不同的协议,代表着不同的资源查找方式、资源传输方式
主机地址:存放资源的主机的iP地址(域名)
路径:资源在主机中的具体位置
URL中常见的协议:
HTTP
超文本传输协议,访问的是远程的网络资源,格式是http://
http协议是网络开发中最常用的协议
file
访问的是电子邮件地址,格式是file://(不用加主机地址)
mailto
访问的是电子邮件地址,格式是mailto:
FTP
访问的是共享主机的文件资源,格式是ftp://
2、HTTP协议简介:
不管是移动客户端还是pc端,访问远程的网络资源经常使用http协议
那下面我们应该想想这些问题:
客户端该传什么格式的数据给服务器,服务器才能看懂;
服务器该返回什么格式的数据给客户端,客户端才能看懂;
两边要怎样传输数据才能有效沟通?
这时候HTTP协议就发挥作用了
HTTP的全称是hypertext transfer protlcol,即超文本传输协议
规定客户端和服务器之间的数据传输格式
让客户端和服务器能有效地进行数据沟通
http协议的特点:
简单快速,灵活(允许传输任意类型的数据)
HTTP0.9和1.0使用非持续连接
限制每次连接只处理一个请求,服务器和客户端的请求作出响应后,马上断开连接,可以节省传输时间。
HTTP基本通信过程:
请求:客户端向服务器索要数据
响应:服务器返回客户端相应的数据
3.iOS中发送HTTP请求的方案:
苹果自带的:
NSURLConnection:用法简单,最古老最经典最直接的一种方案
NSURLSession:比NSURLConnection更加强大
CFNetwork:NSURL *的底层,纯c语言
第三方框架:
ASIHttpRequest:外号“HTTP”终结者,功能极其强大,可惜早已停止更新
AFNetworking:简单易用,提供了基本够用的常用功能,维护和使用者多
MKNetworkKit:简单易用,产自三哥的故乡印度,维护和使用者少
注:为了提高开发效率,企业开发用的基本是第三方框架
4.NSURLConnection
其常用的类为:
NSURL:请求地址
NSURLRequest:一个NSURLRequest对象就代表一个请求,包含的信息有:一个NSURL对象,请求方式、请求头和请求体,请求超时。。。
NSURLConnection:负责发送请求,建立客户端和服务器的连接;发送NSURLRequest的数据给服务器,并收集来自服务器的响应数据。
NSURLConnection使用步骤:
》1创建一个NSURL对象,设置请求路径
》2传入NSURL创建一个NSURLRequest对象,设置请求头和请求体
》3使用NSURLConnection发送NSURLRequest
5.使用NSURLConnection来进行一个举例
1: 新建一个项目
2:在故事版中拖几个控件:
3:在ViewController.m的代码如下:
#import "ViewController.h"@interface ViewController ()@property (weak, nonatomic) IBOutlet UITextField *username;@property (weak, nonatomic) IBOutlet UITextField *pwd;- (IBAction)login;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; }- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; }//点击空白地方,退下键盘- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ [self.view endEditing:YES];}/** * 显示错误信息 * * @param errorMsg 错误信息的内容 */- (void)showError:(NSString *)errorMsg{ // 1.弹框提醒 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"登录失败" message:errorMsg delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil]; [alert show]; }- (IBAction)login { // 1.验证用户名 NSString *usernameText = self.username.text; if (usernameText.length == 0) { [self showError:@"请输入帐号"]; return; } // 2.验证密码 NSString *pwdText = self.pwd.text; if (pwdText.length == 0) { [self showError:@"请输入密码"]; return; } /** 去公司后应该是有一个接口文档 接口文档:定义描述服务器端的请求接口 1> 请求路径URL:客户端应该请求哪个路径 http://localhost/jiaxiao/login 2> 请求参数:客户端要发给服务器的数据 * username - 用户名 * pwd - 密码 3> 请求结果:服务器会返回什么东西给客户端 */ //3.发送用户名和密码给服务器 //创建一个url:请求路径 NSString *urlStr = [NSString stringWithFormat:@"http://localhost/jiaxiao/login?username=%@&pwd=%@",usernameText, pwdText]; NSURL *url = [NSURL URLWithString:urlStr]; //创建一个请求 NSURLRequest *request = [NSURLRequest requestWithURL:url]; //返回的数据 NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; NSLog(@"%@", data); }@end
这个程序说明了如何向服务器发送请求,并接受服务器返回的数据,后续我们将讲解如何解析服务器返回的数据,即data