zoukankan      html  css  js  c++  java
  • AFN

    一、2大管理对象
    1.AFHTTPRequestOperationManager
    * 对NSURLConnection的封装

    2.AFHTTPSessionManager
    * 对NSURLSession的封装

    二、AFHTTPRequestOperationManager的具体使用
    1.创建管理者
    AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];

    2.封装请求参数
    NSMutableDictionary *params = [NSMutableDictionary dictionary];
    params[@"username"] = @"哈哈哈";
    params[@"pwd"] = @"123";

    3.发送请求
    NSString *url = @"http://localhost:8080/MJServer/login";
    [mgr POST:url parameters:params
    success:^(AFHTTPRequestOperation *operation, id responseObject) {
    // 请求成功的时候调用这个block
    NSLog(@"请求成功---%@", responseObject);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    // 请求失败的时候调用调用这个block
    NSLog(@"请求失败");
    }];
    // GET请求
    [mgr GET:url parameters:params
    success:^(AFHTTPRequestOperation *operation, id responseObject) {
    // 请求成功的时候调用这个block
    NSLog(@"请求成功---%@", responseObject);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    // 请求失败的时候调用调用这个block
    NSLog(@"请求失败");
    }];

    三、文件上传demo

    // 1.创建一个管理者
    AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];

    // 2.封装参数(这个字典只能放非文件参数)
    NSMutableDictionary *params = [NSMutableDictionary dictionary];
    params[@"username"] = @"123";
    params[@"age"] = @20;
    params[@"pwd"] = @"456";
    params[@"height"] = @1.55;

    // 2.发送一个请求
    NSString *url = @"http://localhost:8080/MJServer/upload";
    [mgr POST:url parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    // 在发送请求之前会自动调用这个block
    // 需要在这个block中添加文件参数到formData中

    /**
    FileURL : 需要上传的文件的URL路径
    name : 服务器那边接收文件用的参数名
    fileName : (告诉服务器)所上传文件的文件名
    mimeType : 所上传文件的文件类型
    */
    NSURL *url = [[NSBundle mainBundle] URLForResource:@"itcast" withExtension:@"txt"];
    [formData appendPartWithFileURL:url name:@"file" fileName:@"test.txt" mimeType:@"text/plain" error:nil];

    /**
    FileData : 需要上传的文件的具体数据
    name : 服务器那边接收文件用的参数名
    fileName : (告诉服务器)所上传文件的文件名
    mimeType : 所上传文件的文件类型
    */
    // UIImage *image = [UIImage imageNamed:@"minion_01"];
    // NSData *fileData = UIImagePNGRepresentation(image);
    // [formData appendPartWithFileData:fileData name:@"file" fileName:@"haha.png" mimeType:@"image/png"];
    } success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"上传成功");
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"上传失败");
    }];

    四、对服务器返回数据的解析
    1.AFN可以自动对服务器返回的数据进行解析
    * 默认将服务器返回的数据当做JSON来解析

    2.设置对服务器返回数据的解析方式
    1> 当做是JSON来解析(默认做法)
    * mgr.responseSerializer = [AFJSONResponseSerializer serializer];
    * responseObject的类型是NSDictionary或者NSArray

    2> 当做是XML来解析
    * mgr.responseSerializer = [AFXMLParserResponseSerializer serializer];
    * responseObject的类型是NSXMLParser

    3> 直接返回data
    * 意思是:告诉AFN不要去解析服务器返回的数据,保持原来的data即可
    * mgr.responseSerializer = [AFHTTPResponseSerializer serializer];

    3.注意
    * 服务器返回的数据一定要跟responseSerializer对得上
    1> 服务器返回的是JSON数据
    * AFJSONResponseSerializer
    * AFHTTPResponseSerializer

    2> 服务器返回的是XML数据
    * AFXMLParserResponseSerializer
    * AFHTTPResponseSerializer

    3> 服务器返回的是其他数据
    * AFHTTPResponseSerializer

  • 相关阅读:
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    iOS开发系列--IOS程序开发概览
    iOS开发系列—Objective-C之Foundation框架
  • 原文地址:https://www.cnblogs.com/zhangyichao/p/5109301.html
Copyright © 2011-2022 走看看