网络请求的基本知识   我们网络请求用的是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. iOS-布局-Masonry-优先级

    一.AutoLayout有两个重要的属性: 1.Content Compression Resistance 百度翻译(内容压缩抗力) 2.Content Hugging    百度翻译(内容拥抱) ...

  2. Android学习笔记之BitmapFactory.Options实现图片资源的加载...

    PS:小项目总算是做完了...历经20多天...素材,设计,以及实现全由自己完成...心力憔悴啊...该写写博客记录一下学习到的东西了... 学习内容: 1.使用BitmapFactory.Optio ...

  3. MvvmLight框架使用入门(一)

    MvvmLight是比较流行的MVVM框架,相对较为简单易用.可能正因为简单,对应的帮助文档不多,对初学者就不够友好了.这里会用几篇随笔,就个人对MvvmLight的使用经验,来做一个入门的介绍. 第 ...

  4. doctrine2到底是个什么玩意

    之前和最近一个项目用到了Doctrine,由于是别人搭建的,自己没有很了解,最近又开始做的时候发现拙荆见肘,于是看了一下doctrine教程,本文就是加上自己理解的doctrine教程文档笔记了. D ...

  5. WebGL 3D on iOS8 正式版

    今天iOS8终于正式发布了,升级了手头设备后对我来说最重要的就是测试WebGL的3D是否真的能跑苹果的系统了,跑了多个HT for Web的3D例子都非常流畅,比Android刚支持WebGL时好太多 ...

  6. phpBB论坛 代码 语法高亮 模块 Codebox Plus

    phpBB代码语法高亮模块 Codebox Plus Code-By.Org (https://www.phpbb.com/customise/db/mod/codebox_plus/) (https ...

  7. JavaScript对象字面量

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  8. 【EF 译文系列】韧性连接、重试(EF 版本至少为 6)

    原文链接:Connection Resiliency / Retry Logic (EF6 onwards) 一个应用程序的数据库连接,是非常容易受其它因素影响的,比如后端的异常或者不稳定的网络连接等 ...

  9. css3文字导航鼠标悬停气泡动画特效源码下载

    效果体验:http://hovertree.com/texiao/css3/8/ 效果图: 点击这里下载:http://hovertree.com/h/bjaf/8d5vmddq.htm 更多特效:h ...

  10. LeetCode132:Palindrome Partitioning II

    题目: Given a string s, partition s such that every substring of the partition is a palindrome. Return ...