博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS网络编程2-http请求
阅读量:2352 次
发布时间:2019-05-10

本文共 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
 

你可能感兴趣的文章
Spring Cloud 2.x学习笔记:2、feign改进(Greenwich版本)
查看>>
SpringCloud 2.x学习笔记:3、Hystrix(Greenwich版本)
查看>>
SpringCloud 2.x学习笔记:4、Zuul(Greenwich版本)
查看>>
ajax提交JSON数组及Springboot接收转换为list类
查看>>
SpringCloud 2.x学习笔记:5、Config(Greenwich版本)
查看>>
RabbitMQ安装、配置与入门
查看>>
Java异常
查看>>
Ibatis代码自动生成工具
查看>>
ant build.xml教程详解
查看>>
彻底理解ThreadLocal
查看>>
localhost与127.0.0.1的区别
查看>>
windows下的host文件在哪里,有什么作用?
查看>>
操作系统之字符集
查看>>
OSI和TCP/IP
查看>>
Redis集群搭建最佳实践
查看>>
ZooKeeper原理及使用
查看>>
Zookeeper集群搭建
查看>>
利用TypePerf.exe查看性能
查看>>
分布式框架Dubbo
查看>>
解决PKIX:unable to find valid certification path to requested target 的问题
查看>>