0

J'envoie des données en plusieurs parties au texte du serveur avec des images et voix/image et voix sont facultatives dans ce cas lorsque je n'envoie pas les données d'image ou la voix l'application plante aidez s'il vous plaît à ceci!méthode de poste comment envoyer uniquement les paramètres requis objectif-c

-(void)uploadphoto{ 
NSString* mid= @"1"; 
    NSString*[email protected]"13"; //[[NSUserDefaults standardUserDefaults] valueForKey:kUserID]; 

    imageData = UIImagePNGRepresentation (thumbnail.image); 

    AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:baseURLString]]; 

    NSDictionary *parameters = @{@"UserID":userid, @"Name": name_TF.text,@"MandalID":mid,@"Address":address_TV.text,@"PinCode":pincode_TF.text,@"Email":emailid_TF.text,@"Dese":grivence_TV.text}; 

    AFHTTPRequestOperation *op = [manager POST:@"Grievance/CreateRequest" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 

    [formData appendPartWithFileData:imageData name:@"file" fileName:@"image.png" mimeType:@"image/png"]; 

    [formData appendPartWithFileData:audioData name:@"file" fileName:@"Audio.m4a" mimeType:@"audio/.mp4 .m4a"]; 

    } success:^(AFHTTPRequestOperation *operation, id responseObject) { 
     NSLog(@"Success: %@ ***** %@", operation.responseString, responseObject); 

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(@"Error: %@ ***** %@", operation.responseString, error); 
    }]; 
    [op start]; 

    } 
} 
+1

êtes-vous en mesure d'obtenir l'erreur s'il vous plaît mettre à jour l'erreur, puis rectifier facilement. peut être le dictionnaire de certaines clés sera nul. donc le crash apparaîtra. –

+0

oui @ HariKrishnan.P est vrai, mais si le dictionnaire d'une clé n'est pas encore alors mon code va travailler vérifier ma réponse :) –

+0

l'erreur est "corps contenir des paramètres valides" il montre –

Répondre

1
AFHTTPRequestOperation *op = [manager POST:@"Grievance/CreateRequest" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 

    if (imageData!=nil) 
    [formData appendPartWithFileData:imageData name:@"file" fileName:@"image.png" mimeType:@"image/png"]; 


    if (audioData!=nil) 
    [formData appendPartWithFileData:audioData name:@"file" fileName:@"Audio.m4a" mimeType:@"audio/.mp4 .m4a"]; 

} success:^ ... 

En cas de pendant que vous envoyez pas votre image ou imageData & Audiodata audio contient nil (vous ne pouvez pas envoyer image ou audio qui ont données nulles).

+0

c'est ce que j'ai suggéré! upvoted –

+0

fonctionne bien merci –

0

Set bool selon votre demande

-(void)uploadphoto{ 

    BOOL isImgData = YES; //set according to avaibility 
    BOOL isVoiceData = YES;//set according to avaibility 

    NSString* mid= @"1"; 
     NSString*[email protected]"13"; //[[NSUserDefaults standardUserDefaults] valueForKey:kUserID]; 

     imageData = UIImagePNGRepresentation (thumbnail.image); 

     AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:baseURLString]]; 

     NSDictionary *parameters = @{@"UserID":userid, @"Name": name_TF.text,@"MandalID":mid,@"Address":address_TV.text,@"PinCode":pincode_TF.text,@"Email":emailid_TF.text,@"Dese":grivence_TV.text}; 

     AFHTTPRequestOperation *op = [manager POST:@"Grievance/CreateRequest" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 

    if(isImgData){ 

     [formData appendPartWithFileData:imageData name:@"file" fileName:@"image.png" mimeType:@"image/png"]; 
    } 

    if(isVoiceData){ 

     [formData appendPartWithFileData:audioData name:@"file" fileName:@"Audio.m4a" mimeType:@"audio/.mp4 .m4a"]; 

    } 
     } success:^(AFHTTPRequestOperation *operation, id responseObject) { 
      NSLog(@"Success: %@ ***** %@", operation.responseString, responseObject); 

     } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
      NSLog(@"Error: %@ ***** %@", operation.responseString, error); 
     }]; 
     [op start]; 

     } 
} 
+0

vous pouvez chnge si la condition en fonction de votre exigence !! –