Question

Mon application iPhone appelée Google Local Search (version non javascript) se comporter une entreprise de recherche.

Voici mon code pour former une url:

NSString *url = [NSString stringWithFormat:@"http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=%@", keyword];
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:url]];
[request setHTTPMethod:@"GET"];

//get response
NSHTTPURLResponse* urlResponse = nil;  
NSError *error = [[[NSError alloc] init] autorelease];  
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];  
NSString *result = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

Lorsque le mot clé renvoie à des caractères anglais, il fonctionne très bien, mais quand se réfère aux caractères chinois (encodés en UTF8, comme « 天安门 » dont le code UTF8 est « e5a4a9 e5ae89 e997a8 »), il signale une erreur NSURLErrorBadURL (-1000 , Renvoyé quand une URL est suffisamment malformé qui ne peut être lancé une demande d'URL). Pourquoi?

Alors je mène une enquête plus approfondie, j'utilise Safari et tapez l'URL ci-dessous: http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q= 天安门

Il fonctionne aussi, et la sortie, je suis arrivé de Macsniffer est: /ajax/services/search/local?v=1.0&q=%E5%A4%A9%E5%AE%89%E9%97%A8

Alors j'écris une URL de test directement dans mon application

NSString *url = [NSString stringWithFormat:@"http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=%E5%A4%A9%E5%AE%89%E9%97%A8"];

Et ce que je suis arrivé du Macsniffer est une autre chose: /ajax/services/search/local?v=1.0&q=1.687891E-28750X1.417C0001416CP-102640X1.4CC2D04648FBP-9999-1.989891E+0050X1.20DC00184CC67P-953E8E99A8

Il semble que mon mot-clé "% E5% A4% A9% E5% AE% 89% E9% 97% A8" a été traduit en quelque chose d'autre. Alors, comment puis-je former une URL valide? Je besoin d'aide!

Était-ce utile?

La solution

Avez-vous essayé codant pour la chaîne de recherche:

NSString * escapedKeyword = [stringByAddingPercentEscapesUsingEncoding mot-clé: NSUTF8StringEncoding];

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top