How do I set the data for a “PUT” request with AFNetworking?

后端 未结 3 1716
悲&欢浪女
悲&欢浪女 2020-12-16 08:33

I have started to use AFNetworking and it works well when it gets to making simple \"GET\"-request. However now I am trying to do a \"POST\"-request. I use the code below to

3条回答
  •  一个人的身影
    2020-12-16 08:51

    I did not find any easy way to do this. But I did as recommended and created my own sub-class of AFHTTPClient. In the subclass I implemented the methods below. This makes it possible to perform both POST-request & PUT-requests with my own data.

    - (void)postPath:(NSString *)path 
      parameters:(NSDictionary *)parameters 
            data:(NSData*)data
         success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
         failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure;
    {
        NSURLRequest *request = [self requestWithMethod:@"POST" path:path     parameters:parameters data:data];
        AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:success failure:failure];
        [self enqueueHTTPRequestOperation:operation];
    }
    
    - (void)putPath:(NSString *)path 
         parameters:(NSDictionary *)parameters 
               data:(NSData*)data
            success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
            failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure;
    {
        NSURLRequest *request = [self requestWithMethod:@"PUT" path:path parameters:parameters data:data];
        AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:success failure:failure];
    [self enqueueHTTPRequestOperation:operation];
    }
    
    -(NSMutableURLRequest*)requestWithMethod:(NSString *)method 
                                        path:(NSString *)path 
                                  parameters:(NSDictionary *)parameters 
                                     data:(NSData*)data;
    {
        NSMutableURLRequest* request = [super requestWithMethod:method 
                                                          path:path 
                                                    parameters:parameters];
    
        [request setHTTPBody:data];
    
        return request;
    }
    

提交回复
热议问题