obj-c AFNetworking 2.0 POST request does not work

前端 未结 3 1418
面向向阳花
面向向阳花 2020-12-08 17:38

Hi want to send some data (strings and a file) to a server, by using AFNetworking 2.0. Somehow the data for the POST request (for a forumlar) ist not correct, it looks like

3条回答
  •  [愿得一人]
    2020-12-08 18:14

    Finally it works. Was a hassle but now I am really happy... During my testing I had some problems with 'request body stream exhausted' within Wifi, what was strange.

    Below the code that did the trick for me.

    - (void)upload {
    
        // !!! only JPG, PNG not covered! Have to cover PNG as well
        NSString *fileName = [NSString stringWithFormat:@"%ld%c%c.jpg", (long)[[NSDate date] timeIntervalSince1970], arc4random_uniform(26) + 'a', arc4random_uniform(26) + 'a'];
        // NSLog(@"FileName == %@", fileName);
    
        AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    
        NSDictionary *parameters = @{@"lat": @"8.444444",
                                     @"lng": @"50.44444",
                                     @"location": @"New York",
                                     @"type": @"2",
                                     @"claim": @"NYC",
                                     @"flag": @"0"};
         // BASIC AUTH (if you need):
        manager.securityPolicy.allowInvalidCertificates = YES;
        manager.requestSerializer = [AFHTTPRequestSerializer serializer];
        [manager.requestSerializer setAuthorizationHeaderFieldWithUsername:@"foo" password:@"bar"];
        // BASIC AUTH END
    
        NSString *URLString = @"http://192.168.1.157/tapp/laravel/public/foobar/upload";
    
        /// !!! only jpg, have to cover png as well
        NSData *imageData = UIImageJPEGRepresentation(self.imageView.image, 0.5); // image size ca. 50 KB
        [manager POST:URLString parameters:parameters constructingBodyWithBlock:^(id formData) {
            [formData appendPartWithFileData:imageData name:@"file" fileName:fileName mimeType:@"image/jpeg"];
        } success:^(AFHTTPRequestOperation *operation, id responseObject) {
            NSLog(@"Success %@", responseObject);
        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            NSLog(@"Failure %@, %@", error, operation.responseString);
        }];
    
        [self dismissViewControllerAnimated:NO completion:nil];
    }
    

提交回复
热议问题