【问题标题】:About AFNetworking 2关于 AFNetworking 2
【发布时间】:2014-06-27 15:58:46
【问题描述】:

如何将块 AFHTTPRequestOperationManager 动态更改为 POST、GET、DELETE...

原来的例子已经把http方法固定了POST:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    NSDictionary *parameters = @{@"foo": @"bar"};
    [manager POST:@"http://example.com/resources.json" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"JSON: %@", responseObject);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Error: %@", error);
    }];

我想知道,有没有办法动态插入http方法?虚拟示例:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    NSDictionary *parameters = @{@"foo": @"bar"};
  -->  [manager @"POST or GET or DELETE":@"http://example.com/resources.json" parameters:parameters <---success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"JSON: %@", responseObject);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Error: %@", error);
    }];

抱歉,我提出了一个愚蠢的问题。

最好的问候。

【问题讨论】:

    标签: ios iphone xcode afnetworking-2


    【解决方案1】:

    是的,这是可能的。您需要自己设置NSURLRequest(或NSMutableURLRequest):

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    // set up custom reqeust serializer here, if needed
    NSMutableURLRequest *request = [manager.requestSerializer requestWithMethod:@"GET" URLString:[NSURL URLWithString:@"http://example.com/resources.json"] parameters:parameters error:nil];
    [manager HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"JSON: %@", responseObject);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Error: %@", error);
    }];
    

    我没有按原样运行此代码,但您看到了大致的想法。如果您使用的是自定义请求序列化程序,则需要按照上面评论中的说明进行设置。

    只需将@"GET" 替换为@"POST" 或"@DELETE"。

    【讨论】:

    • 一般来说,如果您使用initWithBaseURL 创建了AFHTTPRequestOperationManager,此解决方案将忽略baseURL 设置。
    • @keeshux:为什么使用HTTPRequestOperationWithRequest 方法会忽略baseURL
    • 因为在 HTTPRequestOperationWithRequest 中,您传递的是显式预构建的 NSURLRequest,而不是像在 POSTGET 等中那样的相对路径。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 2014-04-14
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多