网络请求的基本知识   我们网络请求用的是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方法里:
然后删除不需要的代码:
添加网址和修改了一点点代码:
 - (void)viewDidLoad {
[super viewDidLoad];
// 两个网址:
// http://api.openweathermap.org/data/2.5/forecast/daily?lat=39.907501&lon=116.397232&cnt=10 // http://h.hiphotos.baidu.com/image/pic/item/8d5494eef01f3a298a1c0a799c25bc315d607cb5.jpg AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; // 设置回复内容信息
manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"]; AFHTTPRequestOperation *httpOperation = [manager GET:@""
parameters:parameters
success:^(AFHTTPRequestOperation *operation, id responseObject) { }
failure:^(AFHTTPRequestOperation *operation, NSError *error) { }]; }

viewDidLoad

再修改了一点代码:

 - (void)viewDidLoad {
[super viewDidLoad];
// 两个网址:
// http://api.openweathermap.org/data/2.5/forecast/daily?lat=39.907501&lon=116.397232&cnt=10 // http://h.hiphotos.baidu.com/image/pic/item/8d5494eef01f3a298a1c0a799c25bc315d607cb5.jpg NSString* urlStr = @"http://api.openweathermap.org/data/2.5/forecast/daily?lat=39.907501&lon=116.397232&cnt=10"; AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; // 设置回复内容信息
manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"]; [manager GET:urlStr
parameters:nil
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"%@",responseObject);//查看回复的信息
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"%@",error);//以及查看错误信息
}];
}

这个就是用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的错误信息。

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

 
 
 
 
 
 
 
 
 
 
 
 

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

  1. GET/POST请求的使用《极客学院 --AFNetworking 2.x 网络解析详解--2》学习笔记

    AFNetworking是开源代码排名第一的开源库.  GET请求的请求正文 一般都是明文显示的,携带的数据量小. POST用于处理复杂的业务,并不用明文的请求,其实POST请求可以携带更多的参数,只 ...

  2. maven介绍 极客学院

    来自极客学院 Apache Maven 是一套软件工程管理和整合工具.基于工程对象模型(POM)的概念,通过一个中央信息管理模块,Maven 能够管理项目的构建.报告和文档. Maven - 概述 M ...

  3. scrapy爬取极客学院全部课程

    # -*- coding: utf-8 -*- # scrapy爬取极客学院全部课程 import scrapy from pyquery import PyQuery as pq from jike ...

  4. 基于requests实现极客学院课程爬虫

    背景 本文主要是为了完成极客学院课程<Python 单线程爬虫>中讲师布置的实战作业. 开发环境 操作系统:windows 10 Python :Python 2.7 IDE:PyChar ...

  5. python scrapy版 极客学院爬虫V2

    python scrapy版 极客学院爬虫V2 1 基本技术 使用scrapy 2 这个爬虫的难点是 Request中的headers和cookies 尝试过好多次才成功(模拟登录),否则只能抓免费课 ...

  6. python极客学院爬虫V1

    定向爬取极客学院视频,原本只有年费VIP只能下载,经过分析,只要找个免费体验VIP即可爬取所有视频 涉及的基本技术:python xpath 正则 com+ 通过python调用迅雷从组件,实现自动创 ...

  7. 【极客学院出品】Cocos2d-X系列课程之九-BOX2D物理引擎

    Cocos2d-x 是时下最热门的手游引擎,在国内和国外手机游戏开发使用的份额各自是70%和25%,在App Store的top10中,有7个是用它开发的. 本节课程为Cocos2d-x系列课程之九, ...

  8. 【极客学院-idea教程】

    极客学院idea教程: http://whudoc.qiniudn.com/2016/IntelliJ-IDEA-Tutorial/index.html

  9. 极客学院年VIP卡原价260的F码,200出售

    F码是中国最大的IT职业在线教育平台——极客学院推出的VIP时间兑换码,凭此可在极客学院官网兑换年VIP,畅享平台上所有IT技术课程. 购买请点击 http://www.bejson.com/othe ...

随机推荐

  1. [Python] Symbol Review

    From:http://learnpythonthehardway.org/book/ex37.html 1. with X as Y: pass 1.1 yield 2. exec 2.1 name ...

  2. lettuce webdriver 自动化测试---玩转BDD

    行为驱动开发(BDD),依然高大上的矗立在远方,很少被人问津,一方面是BDD的思想不太容易理解,别一方面BDD的资料并不多.中文的资料就更少了. 之前增写过一篇<python BDD 框架之le ...

  3. CSS程序思想

    CSS的设计思想,比如:CSS预处理器.CSS对像(OOCSS).SMACSS.Atomic设计和OrganicCSS等             一.CSS预处理器最重要的功能:      1.连接: ...

  4. Android 学习笔记 Service服务与远程通信...(AIDL)

    PS:这一章节看的我有几分迷茫,不是很容易理解...不过还好总算是明白了一大半了...基本的迷惑是解决了... 学习内容: 1.跨应用启动服务... 2.跨应用绑定服务... 3.跨应用实现通信... ...

  5. [爬虫学习笔记]Url过滤模块UrlFilter

            Url Filter则是对提取出来的URL再进行一次筛选.不同的应用筛选的标准是不一样的,比如对于baidu/google的搜索,一般不进行筛选,但是对于垂直搜索或者定向抓取的应用,那 ...

  6. Winform窗体实现简单的二维码生成和保存

    二维码的生成需要用到二维码生成的类库,ThoughtWorks.QRCode.dll 步骤: 第一步:下载二维码生成类库,ThoughtWorks.QRCode.dll 第二步:新建winform项目 ...

  7. 重新想象 Windows 8.1 Store Apps 系列文章索引

    [源码下载] [重新想象 Windows 8 Store Apps 系列文章] 重新想象 Windows 8.1 Store Apps 系列文章索引 作者:webabcd 1.重新想象 Windows ...

  8. PHP系列之一traits的应用

    Traits 在PHP中实现在方法的重复使用:Traits与Class相似,但是它能够在Class中使用自己的方法而不用继承: Traits在Class中优先于原Class中的方法,引用PHP Doc ...

  9. [Visual Studio Online] 移除Work Item(Feature、Backlog item、Task)

    [Visual Studio Online] 移除Work Item(Feature.Backlog item.Task) 移除 项目的开发过程中,使用Visual Studio Online来做Sc ...

  10. Socket 学习实例

    整理一份Socket代码,整理前辈的代码 http://www.cnblogs.com/yellowapplemylove/archive/2011/04/19/2021586.html 直接贴代码 ...