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:在故事版中拖几个控件:
<span style="font-size:18px;">3:在ViewController.m的代码如下:</span>
<pre name="code" class="objc"><span style="font-size:18px;">#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
</span>
<span style="font-size:18px;">这个程序说明了如何向服务器发送请求,并接受服务器返回的数据,后续我们将讲解如何解析服务器返回的数据,即data</span>