ios开发-UI高级 HTTP协议

本文详细介绍了HTTP协议的基本概念,包括客户端和服务端之间的通信规则、请求与响应包的工作原理、GET与POST请求方法的区别及其应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、HTTP协议的概念
· 全称“超文本传输协议”,浏览器和服务器之间的通信规则 ·HTTP协议永远都是客户端发起请求,服务器回送响应。
2、响应包、请求包
· 客户端发送一个HTTP请求,是向服务器提交了一个HTTP请求包 
· 服务器收到请求之后,向客户端回应一个HTTP响应包
3、HTTP请求常用方法
· GET:是向服务器索取数据的一种请求方式,所有参数拼凑在URL后面,并且参数之间用&隔开
  - 比如http://baidu.com?name=123*pwd=567
  - 传递了2个参数给服务器{
      name参数:123
      pwd参数: 567
  }
  get方法没有请求体,一般用来查询数据
· POST:是向服务器提交数据的一种请求方式,所有参数都放在请求体中,一般用来修改,增加,删除数据

HTTP请求包的结构由两部分组成:HTTP请求头、HTTP请求体 
注意:POST请求方式才有请求体,GET请求只有请求头

GET方法示例代码:

<span style="font-size:14px;"><strong>- (void)viewDidLoad {
    [super viewDidLoad];
    
    NSURL *url = [NSURL URLWithString:@"http://news-at.zhihu.com/api/3/news/latest"];
    // 创建请求
    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];
    // 创建会话(默认发起的是异步的网络请求)
    NSURLSession *session = [NSURLSession sharedSession];
    // 任务
    NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        // 打印错误
        if (error != nil) {
            NSLog(@"error = %@",error);
        }
        // 查看状态
        NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
        NSInteger statusCode = [httpResponse statusCode];
        // 请求头
        NSDictionary *head = httpResponse.allHeaderFields;
        NSLog(@"%ld",statusCode);
        NSLog(@"%@",head);
        // 解析json数据
        id jsonData = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
        NSLog(@"jsonData = %@",jsonData);
        // 显示在UI界面(需要回到主队列)
        dispatch_async(dispatch_get_main_queue(), ^{
    
        });
        
    }];
    //任务重启
    [task resume];
}</strong>
</span>
运行结果部分截图:


POST方法代码示例:

<span style="font-size:14px;"><strong>- (void)viewDidLoad {
    [super viewDidLoad];
   
    NSURL *url = [NSURL URLWithString:@"http://news-at.zhihu.com/api/3/news/latest"];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    request.cachePolicy = NSURLRequestUseProtocolCachePolicy;
    request.timeoutInterval = 120;
    // 设置请求方式(默认为get)必须大写
    request.HTTPMethod = @"POST";
    // 设置请求头
    [request setValue:@"zh-cn" forHTTPHeaderField:@"Accept-Language"];
    // 会话
    NSURLSession *session = [NSURLSession sharedSession];
    // 任务
    NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        // 打印错误
        if (error != nil) {
            NSLog(@"error = %@",error);
        }
        
        NSHTTPURLResponse *httpresponse = (NSHTTPURLResponse *)response;
        // 查看状态
        NSInteger statusCode = httpresponse.statusCode;
        // 请求头
        NSDictionary *heards = httpresponse.allHeaderFields;
        NSLog(@"%ld",statusCode);
        NSLog(@"%@",heards);
        // 解析json数据
        id jsonData = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
        NSLog(@"%@",jsonData);
        
    }];
    // 任务重启
    [task resume];
    
}
</strong></span>

运行结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值