AFNetworking形式-与-NSURLConnection形式的网络请求

一:NSURLConnection网络请求

NSOperationQueue *queue = [[NSOperationQueue alloc] init];
// 异步方法
[NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        NSLog(@"%@", str);
}];

二:AFNetworking形式网络请求

  1.方法一

// 使用AFNetworking 2.0框架的网络请求AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer.timeoutInterval = 30;
manager.responseSerializer = [AFJSONResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"]; // 很多后台格式问题用此行解决,不一定必须

// httpBody
//    NSDictionary *httpBodyParameters = @{@"http": @"body"};
// kJsonSourceURLAddress请求地址
[manager GET:kJsonSourceURLAddress_1 parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
//        NSDictionary *jsonDict = (NSDictionary *)responseObject;
//        [self displayWithParsedDic:jsonDict];

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"错误" message:[NSString stringWithFormat:@"%@", error] delegate:nil cancelButtonTitle:@"关闭" otherButtonTitles:nil, nil];
        [alert show];
}];

  2.方法二

NSURL *url = [NSURL URLWithString:kJsonSourceURLAddress_1];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:30];

//    NSMutableURLRequest *test = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:kJsonSourceURLAddress_1 parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
//        // TODO 文件上传
////        [formData appendPartWithFileData:<#(NSData *)#> name:<#(NSString *)#> fileName:<#(NSString *)#> mimeType:<#(NSString *)#>]
//    }];

//    // 网络GET请求
//    NSMutableURLRequest *requestGet = [NSMutableURLRequest requestWithURL:url];
//    requestGet.HTTPMethod = @"GET";
//    requestGet.timeoutInterval = 30;
//
//    // 网络POST请求
//    NSMutableURLRequest *requestPost = [NSMutableURLRequest requestWithURL:url];
//    requestPost.HTTPMethod = @"POST";
//    requestPost.timeoutInterval = 30;
//    NSData *httpBody = [kJsonSourceURLAddress_1 dataUsingEncoding:NSUTF8StringEncoding];
//    NSLog(@"%@", httpBody);
//    requestPost.HTTPBody = httpBody;

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]
                                         initWithRequest:urlRequest];
operation.responseSerializer = [AFJSONResponseSerializer serializer];
// 很多后台格式问题用此行解决,不一定必须
operation.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
//        NSLog(@"%@", responseObject);
        NSDictionary *jsonDict = (NSDictionary *)responseObject;
        [self displayWithParsedDic:jsonDict];

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"错误" message:[NSString stringWithFormat:@"%@", error] delegate:nil cancelButtonTitle:@"关闭" otherButtonTitles:nil, nil];
        [alert show];
}];

// 上传进度
//    [operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
//
//    }];

[[NSOperationQueue mainQueue] addOperation:operation];

补充:系统自带的json解析

// json数据解析成NSDictionary
NSDictionary *parseData = [NSJSONSerialization JSONObjectWithData:_jsonData options:NSJSONReadingMutableLeaves error:&error];
// NSDictionary转换成json()
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:nil];
时间: 2024-08-07 08:51:52

AFNetworking形式-与-NSURLConnection形式的网络请求的相关文章

iOS NSURLConnection和异步网络请求

在日常应用中,我们往往使用AFNetworking等第三方库来实现网络请求部分.这篇文章会简要地介绍一下如何使用NSURLConnection来进行异步的网络请求. 我们先看一个小demo - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. NSString *urlStr = @"http://www.baidu.c

NSURLConnection实现异步网络请求

第一步:遵守协议NSURLConnectionDataDelegate 第二步:创建包含请求网址的NSURL类型的对象 NSURL * url = [NSURL URLWithString:PATH]; 第三步:创建NSURLRequest请求 NSURLRequest * request = [NSURLRequest requestWithURL:url]; 第四步:将request对象赋给NSURLCon对象开始异步请求 [NSURLConnection connectionWithReq

基于AFNetworking 3.0的集约性网络请求API再封装

基础请求 http://www.cnblogs.com/superbobo/p/5259304.html 音视频.文件下载: http://www.jianshu.com/p/f76830810b35

AFNetworking 2.5.x 网络请求的封装

源码地址 https://github.com/YouXianMing/Networking 说明 1. 将block形式的请求转换成用代理来处理 2. 你可以通过继承父类,改写父类的某些方法来达到转换请求字典(加密或者其他事宜等),转换获取结果的目的(加密或者其他事宜等) 3. 支持下载进度 常规请求源码 // // Networking.h // NetworkingCraft // // Created by YouXianMing on 15/6/11. // Copyright (c)

AFNetWorking 网络请求转载

今天开始会写几篇关于AFN源码解读的一些Blog,首先要梳理一下AFN的整体结构(主要是讨论2.x版本的Session访问模块):我们先看看我们最常用的一段代码: AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; [manager GET:@"https://www.baidu.com" parameters:nil success:^(NSURLSessionDataTask * _Nonnull task

基于AFNetworking封装的网络请求工具类

前提,导入AFNetworking框架 关于修改AFN源码:通常序列化时做对text/plan等的支持时,可以一劳永逸的修改源代码,在acceptableContentTypes中修改即可. GGRequest.h 1 #import <Foundation/Foundation.h> 2 3 @interface GGRequest : NSObject 4 /** 5 * 网络请求方法 6 * 7 * @param url 将要访问的链接 8 * @param param 传入的参数 9

Swift教程16-使用Swift调用AFNetworking进行网络请求

如何使用Swift进行网络请求呢? 我们首先创建一个Swift工程,工程名是SwiftDemo 然后在该工程中新建一个 Oc的类,那么Xcode会询问你是否创建 桥接 Oc和 Swift的 SwiftDemo-Bridging-Header.h文件 选择YES就会生成 工程名-Bridging-Header.h文件,在这个文件中我们引入Oc框架对应的头文件即可实现在Swift工程中调用Oc代码 目前的AFNetworking框架是Oc写的,我们要在Swift使用AF的话,则需要在 Bridgin

ios之NSURLConnection网络请求数据/GET与POST方法

目前可能只是单纯的贴上了一些demo的代码,但是这些代码都是请求数据应该是最基础的使用方法吧,在项目的实际开发中可能用到系统的会非常少,一般都是采用别人非常成熟的第三方开源库来实现数据请求,目前常用的第三方网络请求主要是以下几个:<h3 style="margin: 18px 0px; padding: 0px 0px 5px; border: 0px; outline: 0px; font-size: 22px; vertical-align: baseline; color: rgb(

iOS开发 - AFNetworking网络请求

AFNetworking 什么是AFN 全称是AFNetworking,是对NSURLConnection.NSURLSession的一层封装 虽然运行效率没有ASI高,但是使用比ASI简单 在iOS开发中,使用比较广泛 AFN的github地址 https://github.com/AFNetworking/AFNetworking AFHTTPRequestOperationManager 是AFN中最重要的对象之一 封装了HTTP请求的常见处理 GET\POST请求 解析服务器的响应数据