AFNetworking 使用方法(2.0)
本文介绍的是AFNetworking-2.0 使用方法(增加适应:不完善的head內的 meta的content格式)
随着asihttprequest的停止更新,许多人都转向了AFNetworking、 MKNetworkKit.我也是其中一个。于是我从网上找了许多文章作参考,但是结果都是失败告终。研究了好久都搞不透,最后还是请人帮忙搞定了。经常从网上索取免费资料的一员,要有回报的思想,也为了让更多的人少走些弯路,所以下面是代码:(有错误可以指出)
首先:将AFNetworking、UIKit+AFNetworking 加入到工程
一般要引用这两个包,不然会有错误提示:SystemConfiguration.framework、 MobileCoreServices.framework
然后在要使用的地方
#import "AFHTTPRequestOperationManager.h"
#import "AFHTTPSessionManager.h"
AFHTTPRequestOperationManager的post有两个方法,一个是普通的post,另一个是可以上传图片的
1.上传图片:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManagermanager];
manager.responseSerializer.acceptableContentTypes = [NSSetsetWithObject:@"text/html"];
NSDictionary *parameters =@{@"参数1":@"value1",@"参数2":@"value2"、、、};
NSData *imageData = UIImageJPEGRepresentation([UIImage imageNamed:@"1.png"], 1.0);
[manager POST:@"替换成你要访问的地址"parameters:parametersconstructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData :imageData name:@"1" fileName:@"1.png" mimeType:@"image/jpeg"];
} success:^(AFHTTPRequestOperation *operation,id responseObject) {
NSLog(@"Success: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation,NSError *error) {
NSLog(@"Error: %@", error);
}];
这个方法可以上传图片,如果不用上传图片,可以把这句去掉[formData
appendPartWithFileData :imageDataname:@"1"fileName:@"1.png"mimeType:@"image/jpeg"]
2.普通的post
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManagermanager];
manager.responseSerializer.acceptableContentTypes = [NSSetsetWithObject:@"text/html"];
NSDictionary *parameters =@{@"参数1":@"value1",@"参数2":@"value2"、、、};
[managerPOST:@"替换成你要访问的地址"parameters:parameters
success:^(AFHTTPRequestOperation *operation,id responseObject) {
NSLog(@"Success: %@", responseObject);
}failure:^(AFHTTPRequestOperation *operation,NSError *error) {
NSLog(@"Error: %@", error);
}];
3.增加适应:不完善的head內的 meta的content格式(2014年3月17日11:20)
引用:http://www.cocoachina.com/bbs/simple/?t176000.html
| tom19830924 | 2013-12-27 17:44 |
| 這是我第二次回答這問題了 這不是AFNetworking的問題 這是做Server那邊的人沒把head內的 meta的content格式指定好 請參考 |
|
| evangel | 2014-03-18 21:41 |
| AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.requestSerializer = [AFJSONRequestSerializer serializer]; manager.responseSerializer = [AFJSONResponseSerializer serializer]; [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; [manager.requestSerializer setValue:@"application/json; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; |
|
解决方法:我使用的是evangel的方法,增加下面4句:
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[manager.requestSerializer setValue:@"application/json; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
下面是完整的请求设置:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManagermanager];
manager.responseSerializer.acceptableContentTypes = [NSSetsetWithObject:@"text/html"];
manager.requestSerializer = [AFJSONRequestSerializerserializer];
manager.responseSerializer = [AFJSONResponseSerializerserializer];
[manager.requestSerializersetValue:@"application/json"forHTTPHeaderField:@"Accept"];
[manager.requestSerializersetValue:@"application/json; charset=utf-8"forHTTPHeaderField:@"Content-Type"];
4.超时设置(2014年10月17日15:20)
afnetworking 2.0 没有超时设置,好像2.1以后就有了超时时间设置。
打开你下载的版本,找到AFURLRequewtSerialization.m ,搜索timeout。timeout默认时间是60秒,把它改成你需要的时间
AFNetworking 使用方法(2.0)的更多相关文章
- AFNetworking使用方法
官网下载2.5版本:http://afnetworking.com/ 此文章是基于AFNetworking2.5版本的,需要看AFNetworking2.0版本的请看上一篇文章:AFNetworkin ...
- Git使用方法2.0
## Git来源: 最早开始是由Ruby程序员们发起的.Ruby是日本的家伙搞出来的,日本有个代码托管网站叫heroku,当时用这个的人比较多,现在这个网站还能打开,网址是www.heroku.com ...
- nodejs部署智能合约的方法-web3 0.20版本
参考:https://www.jianshu.com/p/7e541cd67be2 部署智能合约的方法有很多,比如使用truffle框架,使用remix-ide等,在这里的部署方法是使用nodejs一 ...
- C语言 数组初始化的三种常用方法({0}, memset, for循环赋值)以及原理
C语言中,数组初始化的方式主要有三种: 1.声明时,使用 {0} 初始化: 2.使用memset: 3.用for循环赋值. 那么,这三种方法的原理以及效率如何呢? 请看下面的测试代码: #define ...
- Linux内核堆栈使用方法 进程0和进程1【转】
转自:http://blog.csdn.net/yihaolovem/article/details/37119971 目录(?)[-] 8 Linux 系统中堆栈的使用方法 81 初始化阶段 82 ...
- 点按钮ajax get方法修改0或1状态封装成函数
最终效果 列表页面表格里点击按钮修改状态 按钮样式要引入bootstrap才可以用 本文件用的是laravel框架环境 larave路由里 Route::get('category/changesta ...
- c#删除转义字符的方法,删除\0后所有字符串(菜鸟级别)
string str = "78738\01212"; string str_2= Regex.Unescape(str); int index = str_2.IndexOf(& ...
- 让ie6/7/8兼容css3的圆角阴影等特殊效果的方法 PIE1.0.0及placeholder在这些IE下生效的方法
PIE地址:http://css3pie.com/ 使用方法1: #login,#AnnouncementBox { border:3px solid #fff; -webkit-border-r ...
- yii2.0 Activeform表单部分组件使用方法 [ 2.0 版本 ]
文本框:textInput(); 密码框:passwordInput(); 单选框:radio(),radioList(); 复选框:checkbox(),checkboxList(); 下拉框:dr ...
随机推荐
- 通过JCONSOLE监控TOMCAT的JVM使用情况
这个也是要学入一下,JVMr 虚拟机原理不可少. 参考配置URL“: http://blog.163.com/kangle0925@126/blog/static/277581982011527723 ...
- github如何删除一个repository(仓库)
昨天有人问我如何删除自己创建的一个项目,我浏览了一下github网站,确实不太容易找到删除功能.这里介绍一下啊如何在github上删除一个repository 一:首先点击进入你要删除的reposit ...
- 【No system images installed for this target】的解决方式
打开eclipse,新建安卓SDK模拟器时,选择完Target之后,再选择CPU/ABI时,默认为No system images installed for this target. 且无法编辑: ...
- Android 通过外键连接两个数据库
Learn: 1.Android数据库的语法. 2.通过外键连接两个数据库. 3.加强了对数据库的熟悉度. 4.对文本框的visiblity属性的了解. Demo:http://pan.baidu.c ...
- sicily 1007 To and Fro
题意:字符串的操作处理 // Problem#: 8768 // Submission#: 2606406 // The source code is licensed under Creative ...
- C++类静态成员的初始化和用法探讨
一.一般类型的类的静态变量 1.首先看下面的代码: class CTest1 { public: static int m_num1; void printNum(){cout << m_ ...
- Webservice-Java-Xfire
最近公司最近需要将以前提供出去的接口统一用一个标准来实现,考虑到webservice这个是标 准,因此我花时间大概学习了一下webservice,也对JAVA的几个webservice框架进行了一些小 ...
- NSTimer 详细设置
NSTimer 详细设置1:http://blog.csdn.net/davidsph/article/details/7899483 NSTimer 详细设置2:http://blog.csdn.n ...
- jQuery插件开发 格式与解析2
最近忙里偷闲玩一下js插件,经过自身的练习,感觉js插件还是挺好玩的.特此作如下笔记,给自己留个印象.例子形如: (1)类插件:classTool.js Code: (function($,expor ...
- VC6.0建立控制台程序实现PDA应用
作者:iamlaosong 由于须要,又写起了文本界面的程序,以便PDA通过telnet连上运行. 假设是Linuxserver的话.这是非常easy的事,但是用户server是windows ser ...