errore di NSURLErrorBadURL
-
21-09-2019 - |
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!
Soluzione
Hai provato a codifica la stringa di ricerca:
* NSString escapedKeyword = [stringByAddingPercentEscapesUsingEncoding parola chiave: NSUTF8StringEncoding];