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.
objective-c web-services nsdata afnetworking
coder
source share