me gustaría utilizar esta API de Google (solo para pruebas):de Google en Objective-C
https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=en-US
Mi pregunta es: ¿Cómo debo enviar una solicitud POST a esta URL? Estoy usando:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *recDir = [paths objectAtIndex:0];
NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/recordTest.flac", recDir]];
NSData *myData = [NSData dataWithContentsOfFile:[NSString stringWithFormat:@"%@/recordTest.flac", recDir]];
//NSString *audio = [NSString stringWithContentsOfFile:[NSString stringWithFormat:@"%@/recordTest.flac", recDir]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]
initWithURL:[NSURL
URLWithString:@"https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=en-US"]];
[request setHTTPMethod:@"POST"];
//set headers
[request addValue:@"Content-Type" forHTTPHeaderField:@"audio/x-flac; rate=16000"];
[request addValue:@"audio/x-flac; rate=16000" forHTTPHeaderField:@"Content-Type"];
NSString *requestBody = [[NSString alloc] initWithFormat:@"Content=%@", myData];
[request setHTTPBody:[requestBody dataUsingEncoding:NSASCIIStringEncoding]];
[request setValue:[NSString stringWithFormat:@"%d",[myData length]] forHTTPHeaderField:@"Content-length"];
NSHTTPURLResponse* urlResponse = nil;
NSError *error = [[NSError alloc] init];
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];
NSString *result = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSLog(@"The answer is: %@",result);
Pero obtener sólo
{
"status":5,
"id":"fe6ba68a593f9919f5fd33e819d493a0-1",
"hypotheses":[
HERE SHOULD BE THE TEXT
]
}
¿Cuál es incorrecto/¿qué debería hacer?
+1, interesante. –
Por cierto, estás haciendo un uso indebido de los métodos 'addValue: forHTTPHeaderField:' y 'setHTTPBody:' - busca su uso en los documentos. –