Domanda

Il mio iphone app chiamato Google Local Search (versione non JavaScript) di comportarsi un po 'di attività di ricerca.

Qui di seguito è il mio codice in modo da formare un 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];

Quando la parola si riferisce a caratteri inglesi, funziona benissimo, ma quando si riferisce a caratteri cinesi (codificati in UTF8, come ad esempio '天安门' il cui codice è UTF8 'e5a4a9 e5ae89 e997a8'), segnalerà l'errore NSURLErrorBadURL (-1000 , restituito quando un URL è sufficientemente valido che una richiesta URL non può essere iniziata). Perché?

Poi svolgo ulteriori indagini, io uso Safari e digitare l'URL di seguito: http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q= 天安门

Funziona anche, e l'output che ho ricevuto da Macsniffer è: /ajax/services/search/local?v=1.0&q=%E5%A4%A9%E5%AE%89%E9%97%A8

Così scrivo un URL di test direttamente nella mia app

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"];

E quello che ho ottenuto dalla Macsniffer è qualche altra cosa: /ajax/services/search/local?v=1.0&q=1.687891E-28750X1.417C0001416CP-102640X1.4CC2D04648FBP-9999-1.989891E+0050X1.20DC00184CC67P-953E8E99A8

Sembra che la mia parola chiave "% E5% A4% A9% E5% AE% 89% E9% 97% A8" è stato tradotto in qualcos'altro. Così come posso formare un URL valido? Ho bisogno di aiuto!

È stato utile?

Soluzione

Hai provato a codifica la stringa di ricerca:

* NSString escapedKeyword = [stringByAddingPercentEscapesUsingEncoding parola chiave: NSUTF8StringEncoding];

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top