2015-10-07 94 views
1

我想使用AFNetworking POST表单数据。我用这一段代码来实现这一目标:AFNetworking表格数据上传问题

// Create service request url 
    NSString *urlString = [NSString stringWithFormat:@"%@%@", kBaseURL, webServiceAPIName]; 

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
    [manager.requestSerializer setValue:@"myUser" forHTTPHeaderField:@"X-User-Agent"]; 
    [manager.requestSerializer setValue:@"multipart/form-data" forHTTPHeaderField:@"Content-Type"]; 
    manager.responseSerializer = [AFHTTPResponseSerializer serializer]; 

    // Set calling keys 
    NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; 
    [dict setObject:@"5341" forKey:@"Id"]; 
    [dict setObject:@"f1" forKey:@"refDataId"]; 
    [dict setObject:@"f1" forKey:@"customRefDataId"]; 
    [dict setObject:@"587" forKey:@"cost"]; 


    [manager POST:urlString parameters:dict constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 
     [formData appendPartWithFileData:UIImagePNGRepresentation(files[0]) name:@"ImageName" fileName:@"file1" mimeType:@"image/png"]; 
    } success:^(AFHTTPRequestOperation *operation, id responseObject) { 

     NSLog(@"upload successful"); 
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(@"Error image upload"); 
    }]; 

等待一段时间,它会在失败后节这个块的执行之后。记录:"Error image upload"。没有给出任何错误。

我试过我的API在POSTMAN API CLIENT那里它工作正常。我能够发送数据并得到回应。

而运行此块后,我无法运行任何其他API调用我必须停止我的应用程序并再次运行以运行任何其他API调用。

这有什么代码,为什么我不能上传任何形式的数据,为什么它挡住了我的任何其他API调用

+1

您是否使用了最新的框架的版本?在失败区块中,'NSError * error'绝对没有?在你的'appendPartWithFileData:'调用中,出于测试目的,我会把这行代码取出来,并检查'​​NSData'对象也不是零。 – Luke

+0

@Luke这是我得到的错误,在NSError'*错误' – NSUser

+0

'错误域= NSURLErrorDomain代码= -1001“请求超时。” UserInfo = 0x7fde1ae09790 {NSUnderlyingError = 0x7fde1af158d0“请求超时。”,NSErrorFailingURLStringKey = apikey,NSErrorFailingURLKey = apikey,NSLocalizedDescription =请求超时。} – NSUser

回答

0

尝试下面的代码的问题:

-(void) uploadImage { 

NSString *imagePath = [[NSUserDefaults standardUserDefaults] objectForKey:@"userimage"]; 
NSString * urlString = [stagingURL stringByReplacingOccurrencesOfString:@"user/" withString:@""]; 
NSString * uploadURL = @"Your URL where image to be uploaded"; 
NSLog(@"uploadImageURL: %@", uploadURL); 
NSData *imageData = UIImageJPEGRepresentation([UIImage imageWithData:[NSData dataWithContentsOfFile:imagePath]], 0.5); 

NSString *queryStringss = [NSString stringWithFormat:@"%@",uploadURL]; 
queryStringss = [queryStringss stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
manager.responseSerializer=[AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments]; 
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"]; 
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"]; 

[manager POST:queryStringss parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 
    [formData appendPartWithFileData:imageData name:@"file" fileName:@"file" mimeType:@"image/jpeg"]; 
} 
     success:^(AFHTTPRequestOperation *operation, id responseObject) { 

    NSLog(@"Success: %@ ***** %@", operation.responseString, responseObject); 
    [MBProgressHUD hideAllHUDsForView:self.view animated:YES]; 
} 
     failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    [MBProgressHUD hideAllHUDsForView:self.view animated:YES]; 
    NSLog(@"Error: %@ ***** %@", operation.responseString, error); 
}];}