网络请求的基本知识《极客学院 --AFNetworking 2.x 网络解析详解--1》学习笔记

简介:

网络请求的基本知识 我们网络请求用的是HTTP请求

Http请求格式:请求的方法,请求头,请求正文

Http请求的Request fields:请求的头部,以及被请求头部的一些设置

Http请求的Response fields:请求的回复头,通过回复头可以了解服务器给我们的一些状态信息。

项目源码:链接: http://pan.baidu.com/s/1i37yGzN 密码: kw6s

获取这个源码后,解压后直接拖拽进新建的Single View工程:

然后在ViewController.m文件中import "AFNetworking.h",接着在Network.h找到GET请求:

按cmd结合鼠标点击"GET"就可以进入Networking.m的GET的具体实现:

然后把这个GET方法中实现的部分 复制 ,因为我们需要这些代码里的一些参数。复制到ViewController.h的viewDidLoad方法里:

然后删除不需要的代码:

添加网址和修改了一点点代码:

复制代码
 1 - (void)viewDidLoad {
 2  [super viewDidLoad];
 3 // 两个网址:
 4 // http://api.openweathermap.org/data/2.5/forecast/daily?lat=39.907501&lon=116.397232&cnt=10
 5  6 // http://h.hiphotos.baidu.com/image/pic/item/8d5494eef01f3a298a1c0a799c25bc315d607cb5.jpg  7  8 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
 9 10 // 设置回复内容信息 11 manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];
12 13 AFHTTPRequestOperation *httpOperation = [manager GET:@"" 14  parameters:parameters
15 success:^(AFHTTPRequestOperation *operation, id responseObject) {
16 17  }
18 failure:^(AFHTTPRequestOperation *operation, NSError *error) {
19 20  }];
21 22 }
复制代码

再修改了一点代码:

复制代码
 1 - (void)viewDidLoad {
 2  [super viewDidLoad];
 3 // 两个网址:
 4 // http://api.openweathermap.org/data/2.5/forecast/daily?lat=39.907501&lon=116.397232&cnt=10
 5  6 // http://h.hiphotos.baidu.com/image/pic/item/8d5494eef01f3a298a1c0a799c25bc315d607cb5.jpg  7  8 NSString* urlStr = @"http://api.openweathermap.org/data/2.5/forecast/daily?lat=39.907501&lon=116.397232&cnt=10";
 9 10 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
11 12 // 设置回复内容信息 13 manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];
14 15  [manager GET:urlStr
16  parameters:nil
17 success:^(AFHTTPRequestOperation *operation, id responseObject) {
18 NSLog(@"%@",responseObject);//查看回复的信息 19  }
20 failure:^(AFHTTPRequestOperation *operation, NSError *error) {
21 NSLog(@"%@",error);//以及查看错误信息 22  }];
23 }
复制代码

运行之后就能打印出网页数据。

经过一个简单的实例后,讲讲HTTP的请求格式:

// = HTTP请求格式 =
// ------------------------------
// * 请求方法 (GET、POST等) *
// * 请求头 (HttpHeaderFields) *
// * 请求正文 (数据) *
// ------------------------------
首先需要知道的是请求方法,有很多请求方法,其中最常用的是GET、POST方法,上面的实例使用的是GET请求,如果改为POST请求:

其它和GET请求一样:

然后运行就同样可以有数据结果。同时说明,那个网站即支持GET请求,也支持POST请求。

好,上面讲的就是请求的方法,下面讲讲请求头是什么?

我们发送请求的时候,服务器怎么知道请求的设备是苹果手机还是安卓手机,其实在发送给服务器的包头信息,就自动的把我门的设备信息写进去了。请看上面图里的"User-Agent"的信息,它就是我的模拟器设备的信息。这个信息也是可以自己修改的。这个修改到后面会讲到。

关于头部信息,我们可以 通过 维基百科 了解,网址是:https://en.wikipedia.org/wiki/List_of_HTTP_header_fields

对照:

Accept-Language用的是en英语,我们代码的包头请求信息还包括 zh中文 。

这个关系到用户的信息。

上面就是请求头部的信息,下面讲讲服务器返回给我们的状态信息:

在那个维基百科的网页里也是有相关的Response fields列表的:

这些很多信息可以参考维基百科的这个网址进行参考,从而可以了解所请求的服务器的头部的信息。而且其中已经显示了这个网址是可以进行GET和POST请求:

通过这个请求头部信息,可以帮助我们 理解 为什么 我们请求不成功。

最后讲讲请求的正文:

我们怎么知道请求的正文是什么呢?请求的正文就是我们需要携带的数据:

只这里我们只需要看这行代码:

注意 ? 前面的就是网址,而 ? 后面的是请求携带的参数,这些参数就是正文。然后我们把这部分正文 写进 代码 中,然后删掉urlStr中的这部分正文:

最后显示的是 cod=404表示出错了,然后我们把它改为GET请求,然后就成功了。

说明这个网址虽然 包头 信息告诉我们可以用GET和POST请求,但是通过POST给我们返回的是404的错误信息。

以上上面讲到的三点基础知识点 需要熟悉。


相关文章
|
1月前
|
机器学习/深度学习 算法 PyTorch
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
225 1
|
1月前
|
缓存 网络协议 Linux
【Shell 命令集合 网络通讯 】Linux 配置DNS dnsconf 命令 使用教程
【Shell 命令集合 网络通讯 】Linux 配置DNS dnsconf 命令 使用教程
38 0
|
14天前
|
存储 安全 测试技术
网络奇谭:虚拟机中的共享、桥接与Host-Only模式解析
网络奇谭:虚拟机中的共享、桥接与Host-Only模式解析
18 0
|
1月前
|
SQL 安全 网络安全
构筑数字堡垒:网络安全漏洞解析与防御策略
在数字化时代,网络安全已成为维护信息完整性、保障用户隐私和确保商业连续性的关键。本文将深入探讨网络安全领域的核心议题—安全漏洞及其防御机制。通过分析常见网络攻击手段,如SQL注入、跨站脚本攻击(XSS)及拒绝服务(DoS)攻击,揭示其背后的原理与潜在危害。同时,文章将重点介绍加密技术的种类和应用场景,以及如何通过强化安全意识,构建多层次的防御体系来有效预防和应对网络安全威胁。本研究旨在为读者提供一份系统性的网络安全防护指南,帮助个人和组织在不断演变的威胁面前保持警惕,并采取适当的安全措施。
20 2
|
1月前
|
域名解析 缓存 网络协议
探索Qt 网络编程:网络地址与服务类全解析
探索Qt 网络编程:网络地址与服务类全解析
55 0
|
1月前
|
数据采集 前端开发 JavaScript
Java网络爬虫实践:解析微信公众号页面的技巧
Java网络爬虫实践:解析微信公众号页面的技巧
|
1月前
|
运维 监控 网络虚拟化
|
1月前
|
存储 网络协议 API
网络原理-TCP/IP(3) - 三次握手超详解析
网络原理-TCP/IP(3) - 三次握手超详解析
|
2月前
|
域名解析 缓存 网络协议
|
2月前
|
域名解析 弹性计算 缓存
DNS问题之无法通过域名访问如何解决
DNS服务器是负责将域名转换为IP地址的服务,它是互联网上实现域名解析的关键基础设施;本合集将探讨DNS服务器的工作原理、配置方法和常见问题处理,帮助用户理解和优化DNS服务的使用。
73 2

推荐镜像

更多