AFNetworking的基本使用方法

什么是GET请求?

如果只是单纯的下载数据, 使用GET请求

什么是POST请求?

特点:  请求的内容不会出现在URL网址中

向服务器发送用户名和密码, 或者上传文件, 使用POST

1.GET请求(html,json,xml)

-(void)testGetRequset
{
NSString *urlString=@"http://www.baidu.com";
urlString=@"http://m.weather.com.cn/data/101010100.html"; //定义AFNetworking管理
AFHTTPRequestOperationManager *manager=[AFHTTPRequestOperationManager manager];
//注意:默认认为数据是JSON,content-type也是JSON,responseObject是解析的字典和数组,不是产生错误Code=-1016
//解决:设置解析器为HTTP形式,下载回来是NSData
manager.responseSerializer=[AFHTTPResponseSerializer serializer];
[manager GET:urlString parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
//responseObject重要参数,包含下载数据
//NSLog(@"ok = %@",responseObject);
NSString *str=[[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"str = %@",str); } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"error = %@",error);
}];
}

2.POST请求

-(void)testPostRequset
{
//POST接口:http://quiet.local/testdir/login.php
//参数1:@"user":@"quiet"
//参数2:@"password":@"123"
NSString *urlString=@"http://quiet.local/testdir/login.php";
AFHTTPRequestOperationManager *manager=[AFHTTPRequestOperationManager manager];
manager.responseSerializer=[AFHTTPResponseSerializer serializer]; //参数1:传入地址
//参数2:传入URL请求的参数,格式传入字典
[manager POST:urlString parameters:@{@"user": @"tiger",@"password":@""} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSString *str=[[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"str = %@",str);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"error = %@",error);
}];
}

3.上传文件(上传图片)

-(void)testUploadFile
{
NSString *urlString=@"http://quiet.local/uploadtest/upload.php";
//参数名:image:参数值是图片
AFHTTPRequestOperationManager *manager=[AFHTTPRequestOperationManager manager];
manager.responseSerializer=[AFHTTPResponseSerializer serializer];
[manager POST:urlString parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
//实现:上传的数据附加到请求体中
NSString *path=[[NSBundle mainBundle] pathForResource:@"1.jpg" ofType:nil];
[formData appendPartWithFileURL:[NSURL fileURLWithPath:path] name:@"image" fileName:@"150140.jpg" mimeType:@"image/jpeg" error:nil];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSString *str=[[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"str = %@",str);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"error = %@",error);
}];
}

4.下载文件

-(void)testDownloadFile
{
NSString *urlString = @"http://imgcache.qq.com/club/item/avatar/zip/7/i87/all.zip";
//创建会话管理器对象(通过默认配置)
AFURLSessionManager *manager=[[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
NSURLSessionDownloadTask *task=[manager downloadTaskWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlString]] progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
//返回文件保存的位置
NSString *path=[NSString stringWithFormat:@"%@/Documents/all.zip",NSHomeDirectory()];
NSLog(@"path = %@",path);
return [NSURL fileURLWithPath:path];
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
NSLog(@"下载完成");
}]; //启动任务
[task resume]; }

5.监控网络状态

-(void)testMonitorNetworkStautus
{
AFHTTPRequestOperationManager *manager=[[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:@"www.baidu.com"]];
[manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
NSDictionary *dic=@{@(AFNetworkReachabilityStatusUnknown): @"未知",@(AFNetworkReachabilityStatusNotReachable):@"不可达",@(AFNetworkReachabilityStatusReachableViaWWAN):@"GPRS",@(AFNetworkReachabilityStatusReachableViaWiFi):@"Wifi"};
NSLog(@"状态为 %@",dic[@(status)]);
}];
[manager.reachabilityManager startMonitoring];
}

6.图片异步下载(替代SDWebimage)

(1)包含头文件:UIKit+AFNetworking.h

(2)使用:-(void)setimageWithURL:(NSURL *)url

7.有些请求特殊的请求头

例如:BAIDU_WISE_UID=wapp_1428385381699_466;

BAIDU_WISE_UID=wapp_1428385381699_466;

AFHTTPRequestOperationManager *manager=[AFHTTPRequestOperationManager manager];

[manager.requestSerializer setValue:@"wapp_1428385381699_466" forHTTPHeaderField:@"BAIDU_WISE_UID"];

ios开发 AFNetworking的基本使用方法的更多相关文章

  1. iOS开发 GET、POST请求方法(NSURLSession篇)

    NSURLConnection,在iOS9被宣布弃用,本文不使用NSURLConnection进行网络编程,有兴趣的童鞋可以参考: [iOS开发 GET.POST请求方法(NSURLConnectio ...

  2. iOS开发 GET、POST请求方法(NSURLConnection篇)

    Web Service使用的主要协议是HTTP协议,即超文本传输协议. HTTP/1.1协议共定义了8种请求方法(OPTIONS.HEAD.GET.POST.PUT.DELETE.TRACE.CONN ...

  3. iOS开发中的Html解析方法

    iOS开发中的Html解析方法 本文作者为大家介绍了在iOS开发中的Html解析方法,并同时提供了Demo代码的下载链接,Demo 解析了某个网站(具体可在代码中查看)的html网页,提取了图片以及标 ...

  4. iOS开发 GET、POST请求方法:NSURLSession篇

    NSURLConnection,在iOS 9被宣布弃用,本文不使用NSURLConnection进行网络编程,有兴趣的童鞋可以参考: iOS开发 GET.POST请求方法(NSURLConnectio ...

  5. iOS开发-关闭/收起键盘方法总结

    前言:作为IOS开发人员,需要经常和表单打交道.因此我对收起键盘的方法作了下总结,IOS收起键盘有三种方法(如果有其它收起键盘的方法请在留言区指错). 收起键盘的方法: 1.点击Return按扭时收起 ...

  6. 【转】iOS开发-关闭/收起键盘方法总结

    原文网址:http://www.cnblogs.com/GarveyCalvin/p/4167759.html 前言:作为IOS开发人员,需要经常和表单打交道.因此我对收起键盘的方法作了下总结,IOS ...

  7. iOS开发-AFNetworking参数和多文件同时上传【多文件上传】

    1. 前言 在项目开发中,我们经常需要上传文件,例如:上传图片,上传各种文件,而有时也需要将参数和多个文件一起上传,不知道大家的项目中遇到了没有,我在最近的项目中,就需要这样的一个功能:同时上传参数. ...

  8. iOS开发:AFNetworking、MKNetworkKit和ASIHTTPRequest比较

    转:http://www.xue5.com/Mobile/iOS/747036.html 之前一直在使用ASIHTTPRequest作为网络库,但是由于其停止更新,iOS7上可能出现更多的问题,于是决 ...

  9. iOS开发 AFNetworking 3.0使用遇到的问题

    前段时间写了一个iOS开发之AFNetworking 3.0.4使用这篇文章,是基本的用法,昨天在使用的时候又出现了几个问题,特地俩记录下,希望能帮到大家! 问题一 我是做一个获取手机验证码的功能,进 ...

随机推荐

  1. HDU 1269 裸奔的强联通分量

    看了别人博客  http://blog.csdn.net/jokes000/article/details/7538994 #include <cstdio> #include <c ...

  2. 管理员权限dropfiles和copydata小时失败问题

    //处理低权限向高权限进程发消息的失败的问题 if(windows::version::instance()->IsVistaOrLater()) { typedef BOOL (WINAPI ...

  3. 客户端技术:Cookie 服务端技术:HttpSession

    客户端技术:Cookie 服务端技术:HttpSession 07. 五 / android基础 / 没有评论   一.会话技术1.什么是会话:客户打开浏览器访问一个网站,访问完毕之后,关闭浏览器.这 ...

  4. 操作html标签之找到标签

    引入 丰富多彩的html标签构成了网页.例如p,div,li,ul,a......…….它们都有自己默认的样式,且各不一样,例如h1标签就比p标签的margin要大一些.我们学习css的目的是为了改变 ...

  5. python functools.wraps装饰器模块

    # -*-coding=utf-8 -*-#实现一个函数执行后计算执行时间的功能 __author__ = 'piay' import time, functools def foo(): ''' 定 ...

  6. 1172: 单词接龙(XCOJ 暴力DFS)

    1172: 单词接龙 时间限制: 1 Sec  内存限制: 128 MB提交: 12  解决: 5 标签提交统计讨论版 题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词 ...

  7. Android平台上使用气压传感器计算海拔高度

    气压传感器两年前已经开始被手机制造商运用在其设备上,但貌似没有引起开发者足够的重视.像Galaxy S III .Galaxy Note 2和小米2手机上都有,不过大家对于气压传感器比较陌生.其实大气 ...

  8. Linux中重命名文件

    linux下重命名文件有两种方式: 1.较简单的处理命令:mv mv 原文件名 新文件名 如:mv myFile newName 将MyFile重命名为newName. 2.linux提供了一个重命名 ...

  9. qemu cow镜像分析

    最近研究了以下qemu最简单的read on direct 镜像格式cow,在稀疏文件的模式下,这种方式还是比较简单,而且有优势的.其优势主要体现在云计算环境中,不需要用到qcow2的那些诸如内部快照 ...

  10. Effective Java2读书笔记-类和接口(四)

    第19条:接口只用于定义类型 这一条就举了一个反例,说有些接口中只包含常量.这是对接口的不良使用.要实现相同的功能,应该使用不可实例化的工具类(第4条说过). public class Physica ...