2019独角兽企业重金招聘Python工程师标准>>>

网络请求的基本知识   我们网络请求用的是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 }

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     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 }

这个就是用AFNeworking写出来的最简单的GET请求

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

经过一个简单的实例后,讲讲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的错误信息。

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

转载于:https://my.oschina.net/u/2363463/blog/635655

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

  1. 初出茅庐的小李第3篇博客《5G物联网及NB-IoT技术详解》读书笔记1

    初出茅庐的小李第3篇博客 <5G物联网及NB-IoT技术详解>读书笔记1 在Mculover666那里白嫖了一本书,不要问我咋白嫖的,我也不知道- 为什么要写这样的笔记? 因为我白嫖的时候 ...

  2. 【网络基础】《TCP/IP详解》学习笔记3

    一. 第四章:<ARP:地址解析协议> 问题一:ARP的作用? ARP为IP地址到对应的硬件地址提供动态映射. 问题二:ftp hostname的过程. 1) DNS解析,将hostnam ...

  3. 【网络基础】《TCP/IP详解》学习笔记4

    问题六:ARP代理是怎么回事? 路由器回答从一个网络的主机发往另一个网络主机的ARP请求的过程称为ARP代理. 应用环境: Proxy ARP应该使用主机没有配置默认网关或没有任何路由策略的网络上. ...

  4. 【网络基础】《TCP/IP详解》学习笔记2

    检验和计算:  首先,把检验和字段置为0.  45 00 00 2e  be 55 00 00  7a 11 00 00<----检验和置为0  de b7 7e e3  c0 a8 12 7a ...

  5. 【网络基础】《TCP/IP详解》学习笔记5

    一. 第六章:<ICMP:Internet控制报文协议> 问题一:ICMP的层次和作用. ICMP一般认为是在三层的.主要传递一些差错报文和其他需要注意的信息. 问题二:ICMP报文的分类 ...

  6. 【网络基础】《TCP/IP详解》学习笔记6

    一. 第八章<Traceroute程序> 问题一:Traceroute的基本工作原理? trcertroute建立一个UDP数据包,不断修改TTL值并发送出去,如果收到"超时错& ...

  7. 《ABAQUS有限元分析实例详解》学习笔记_51CAE_新浪博客

    石亦平老师的<ABAQUS有限元分析实例详解>当属ABAQUS学习的经典著作,一边认真拜读一边在此写下点滴笔记,供自己参考. 1.ABAQUS/CAE并没有自己专用的量纲系统,用户建立的整 ...

  8. python极客学院爬虫_学习极客学院多线程爬虫课程的收获

    昨天开始了极客学院<XPath与多线程爬虫>课程的学习,主要涉及到XPath和requests的使用,在测试过程中出现了很多问题,经过不断摸索以及前辈们的帮助,现将经验总结如下: 1. P ...

  9. 极客学院-Html5个人笔记总结

    第一部分,HTML5基础 1,什么是HTML5?  (Hyper Text Markup Language) 超文本标记语言,用于描述网页的一种语言.  2,HTML5相关知识?  HTML  XHT ...

最新文章

  1. WebRTC音频预处理单元APM的整体编译及使用
  2. java web视频_超全面的JavaWeb视频教程
  3. 《Effective Java》读书笔记 Item 1:考虑静态工厂方法,而不是构造器
  4. C#session共享+redis_技术干货分享:基于SpringBoot+Redis的Session共享与单点登录
  5. python时heatmap_就业寒冬,从拉勾招聘看Python就业前景
  6. 如何在VB中使用正则表达式
  7. EGE基础入门篇(一):绘图基础知识
  8. 谈ISO9000-3内容及其与CMM关系
  9. 添加WhatsApp链接教程
  10. 恢复icloud 微信无法连接服务器,从iCloud恢复,找回微信消息
  11. HTML+CSS静态网页制作:电影网站设计——漫威电影(2页)
  12. 广域网宽带接入技术一
  13. 设计师:设计师的知识储备之异形曲面设计 巴洛克、洛可可 设计理论(三角形构图、平衡式构图、三分法构图 、九宫格构图)之详细攻略
  14. 新·自学日语教材推荐加点评
  15. Python中列表,元组,字典的一些基本用法
  16. 华为AX3Pro路由器配置成交换机使用
  17. ANSYS apdl命令流笔记6--------生成线的10种方法
  18. oracle数据的安装,与基本配置
  19. XSD(XML Schema Definition)用法实例介绍以及C#使用xsd文件验证XML格式
  20. I2C 连接 12864 OLED 屏幕

热门文章

  1. linux命令行终端全局反色
  2. linux 创建/删除 swap交换分区
  3. stay hungry stay foolish原文_弟子规原文+译文+注释
  4. docker的文件流处理_Docker数据卷Volume实现文件共享、数据迁移备份(三)--技术流ken...
  5. 测试用例的书写方式及测试模板大全
  6. navicat premium 链接postgresql 无法加载表_POSTGRESQL 数据库结构体系 ||| 东来西去 三个角度看...
  7. keil查看程序运行时间_Keil系列教程05_工程目标选项配置(一)
  8. caffe安装_Ubuntu 16.04 下 Theano 安装,及配置多 GPU使用(Multiple GPUs)
  9. ajax如何将数据写入文本框,ajax 从数据库读到文本框
  10. MySQL 笔记5 -- 多表查询