2015-10-07 95 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); 
}];}