ios网络开发 AFNetworking

一、早前的几个网络框架
1、ASI框架: HTTP终结者.很牛, 但是有BUG, 已经停止更新.
2、MKNetworkKit (印度人写的).
3、AFN一直还在更新.

 

AFNetworking的出现:MAC/iOS设计的一套网络框架.(为了简化网络操作)

 

 

*AFN专注与网络数据传输,以及网络中多线程的处理.
 

二、AFNetworking的使用

 

1、AFN特性 :
*登录传参数时,传递字典即可.(键名为参数名,键值为参数值).
*自动到子线程中执行,执行完后返回主线程.
*返回的结果自动序列化为NSDictionary.
 
2、使用AFN注意 :
*AFHTTPRequestOperationManager封装了通过HTTP协议与Web应用程序进行通讯的常用方法.(这个实例化的时候不是单例, 因为没有shared字)
*包括创建请求/响应序列化/网络监控/数据安全.
*方法等都是以AF开头的.

 

 

3、AFN能做的 (网络中的都涵盖了):
*GET/POST/PUT/DELETE/HEAD请求.
*JSON数据解析/Plist数据解析.(不支持XML数据解析)
*POSTJSON.
*上传/下载.

 

 

4、使用步骤 : (可参考说明文档)
1.首先需要实例化一个请求管理器AFHTTPRequestOperationManager.
2.设置请求的数据格式:默认是二进制.(不是可改)
*AFHTTPRequestSerializer(二进制)
*AFJSONRequestSerializer(JSON)
*AFPropertyListRequestSerializer(Plist)
3.设置响应的数据格式:默认是JSON.(不是可改)
*AFHTTPResponseSerializer(二进制)
*AFJSONResponseSerializer(JSON)
*AFPropertyListResponseSerializer(Plist)
*AFXMLParserResponseSerializer(XML)
*AFImageResponseSerializer(Image)
*AFCompoundResponseSerializer(组合的)
4.如果响应者的MIMEType不正确,就要修改acceptableContentTypes.
5.调用方法,发送响应的请求(GET/POST...).

 

AFN进行GET、POST请求:

 

1   AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
2   manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
3   [manager GET:@"http://www.weather.com.cn/data/sk/101010100.html" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
4         NSLog(@"JSON: %@", responseObject);
5  } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
6         NSLog(@"Error: %@", error);
7  }];

结果为:

2014-11-05 17:08:26.219 TestAFNetWorking[27957:70b] JSON: {

    weatherinfo =     {

        Radar = "JC_RADAR_AZ9010_JB";

        SD = "20%";

        WD = "\U897f\U5357\U98ce";

        WS = "2\U7ea7";

        WSE = 2;

        city = "\U5317\U4eac";

        cityid = 101010100;

        isRadar = 1;

        njd = "\U6682\U65e0\U5b9e\U51b5";

        qy = 1014;

        temp = 17;

        time = "16:45";

    };

}

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。