AFNetworking 使用方法(2.0)

AFNetworking 使用方法(2.0)

分类: IOS2014-11-12 09:17 2018人阅读 评论(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 [email protected]{@"参数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 :imageData
name:@"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格式指定好

請參考
http://stackoverflow.com/questions/477816/what-is-the-correct-json-content-type

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秒,把它改成你需要的时间
时间: 2024-10-13 00:47:05

AFNetworking 使用方法(2.0)的相关文章

Git使用方法2.0

## Git来源: 最早开始是由Ruby程序员们发起的.Ruby是日本的家伙搞出来的,日本有个代码托管网站叫heroku,当时用这个的人比较多,现在这个网站还能打开,网址是www.heroku.com.只不过后来硅谷玩ruby的兄弟们把git搞出来了,还主动把Rails框架也搬上去了,所以自然整个Ruby社区跟着就转用Git了. ## Git的产生: git的思想就是每个人都在自己本地的branch上进行工作,在最终提交前再合主干合并,然后再提交.这样做有几点好处: 1.适合分布式开发,强调个体

sqlite方法-2.0

版权:小白 QQ:99565687[其实这个QQ就是我] 声明:sqlite3数据库是以utf-8来进行编码的,所以尽量不要用中文去使用数据库. 删除列且列数据[方法]:1.新建临时表(t) --并且将t表里面的字段名设与要删除表一致.2.将要删除列的表所有数据都转入临时表中.3.删除要删除列的表,然后将临时表(t)命名为要删除列的表名. 删除单个数据[方法]1.update 表名 set 字段名=null where 条件2.null,就是空的意思,只要将单个数据更新为null,就证明里面没有

JS实现移动端下拉刷新更多分页请求功能方法2.0

本次2.0升级版为js实现移动端加载更多下拉刷新更多分页请求功能方法(数据一次请求,前端分页,适用于数据流量较少,数据量压力小的页面)同时新增loading组件,turnToTop组件. 本文原创非转载,如需转载请注明出处:http://www.cnblogs.com/A-QBlog/p/7068959.html 废话不多说,直接上代码: 1 ;(function (w, $) { 2 3 var loadmore = { 4 /*单页加载更多 通用方法 5 * 6 * @param callb

nodejs部署智能合约的方法-web3 0.20版本

参考:https://www.jianshu.com/p/7e541cd67be2 部署智能合约的方法有很多,比如使用truffle框架,使用remix-ide等,在这里的部署方法是使用nodejs一步步编译部署实现的: const Web3 = require('web3'); const web3 = new Web3();//使用web3来进行区块链接口的调用 //通过rpc连接区块链,这里连接的是本地私有链 web3.setProvider(new Web3.providers.Http

yii2.0 Activeform表单部分组件使用方法 [ 2.0 版本 ]

文本框:textInput(); 密码框:passwordInput(); 单选框:radio(),radioList(); 复选框:checkbox(),checkboxList(); 下拉框:dropDownList(); 隐藏域:hiddenInput(); 文本域:textarea(['rows'=>3]); 文件上传:fileInput(); 提交按钮:submitButton(); 重置按钮:resetButtun(); <?php $form = ActiveForm::begi

App线上推广的笨方法——从0到100万的质变

线上推广APP,有一些笨办法,经常被人忽视,但确是一些成本低.效果好的方法,我们今天就来讲讲这些线上推广APP的笨办法.比如说论坛发贴, QQ群聊,拉注册,比较辛苦,你拉来一个用户注册我们的网站,使用我们的APP,这是比较慢的方法.还有就是社交分享,比如说分享到微博.人人网.微信等等,这些都是App推广中的比较笨的方法. 还有一些快的方法,比如说投放电视广告,比如说上<天天向上>,卫视.汽车.公交车上面的广告.地铁上面的广告,明星代言.事件营销.另外就是疯狂砸钱,像滴滴打车一样.当然快的方法还

c#删除转义字符的方法,删除\0后所有字符串(菜鸟级别)

string str = "78738\01212"; string str_2= Regex.Unescape(str); int index = str_2.IndexOf("\0"); str_2 = str_2.Remove(index);

http缓存浅析及HttpCache使用方法 [ 2.0 版本 ]

1.学习理由:合理的利用http缓存在对网站性能提升有非常巨大的作用,而且十分经济实惠 2.http缓存浅析 3.如何使用HttpCache来实现http缓存 http缓存浅析 1.当客户端第一次访问网站的时候,浏览器是没有缓存的,所以所有的资源都是从服务器获取的(会将css,js,图片)等资源缓存到客户端的本地 2.当客户端第二次以后访问网站的时候,会先去先去检查本地有没有有效缓存, a.如果在客户端就可以确定是有效缓存的话,那么就不会去请求服务器(通过http header expires信

addChildViewController新方法5.0

 [IOS笔记] - addChildViewController View Controller中可以添加多个sub view,在需要的时候显示出来: 可以通过viewController(parent)中可以添加多个child viewController;来控制页面中的sub view,降低代码耦合度: 通过切换,可以显示不同的view:,替代之前的addSubView的管理 //在parent view controller 中添加 child view controller Fir