Send audio using a web service using AFNetworking

Hy, I have a sound that I need to send using a web service along with other inputs. After doing some searching, I realized that I could not send nsdata using an xml-soap message, so I downloaded the AFHTTPRequest classes and followed the examples on the Internet, but it didn’t work. This is the web service I use:

<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <addlocation2 xmlns="http://tempuri.org/"> <userid>int</userid> <name>string</name> <voicemsg>base64Binary</voicemsg> </addlocation2> </soap:Body> </soap:Envelope> 

this is the code i use to send data and other parameters:

  NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"m4a"]; NSData *audio = [NSData dataWithContentsOfFile:filePath]; AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; NSString *URLString = @"http://host.com/Websr/Service.asmx?op=addlocation2";//[WebService getAudioURL]; NSDictionary *parameters = @{@"userid": @2, @"name": @"usertest", }; manager.requestSerializer = [AFHTTPRequestSerializer serializer]; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html", @"audio/m4a", nil]; [manager POST:URLString parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { if (audio) { [formData appendPartWithFileData:audio name:@"voicemsg" fileName:[NSString stringWithFormat:@"test.m4a"] mimeType:@"audio/m4a"]; } } success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"Success %@", responseObject); NSLog(@"operation %@", operation.responseString); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Failure" message:@"Sending Failure" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [alert show]; NSLog(@"Failure %@, %@", error, operation.responseString); }]; [self dismissViewControllerAnimated:NO completion:nil]; 

An application crashes with excessive bad access when it reaches an if statement containing data in the AFURLResponseSerialization.h class:

 - (BOOL)validateResponse:(NSHTTPURLResponse *)response data:(NSData *)data error:(NSError *)error { BOOL responseIsValid = YES; NSError *validationError = nil; if (response && [response isKindOfClass:[NSHTTPURLResponse class]]) { if (self.acceptableContentTypes && ![self.acceptableContentTypes containsObject:[response MIMEType]]) { NSLog(@"[response URL] %@", [response URL]); if ([data length] > 0 && [response URL]) { ...} 

Any advice is appreciated. thanks.

+8
objective-c web-services nsdata afnetworking
source share
1 answer

You do not need to use the AFHTTPRequest classes. Your requirement is to simply send base64Binary data over the network, which your web service says. Follow the link below. It will be useful. http://iosdevelopertips.com/core-services/encode-decode-using-base64.html

+3
source share

All Articles